\
.\" This man page was generated by the Netpbm tool 'makeman' from HTML source.
.\" Do not hand-hack it! If you have bug fixes or improvements, please find
.\" the corresponding HTML page on the Netpbm website, generate a patch
.\" against that, and send it to the Netpbm maintainer.
.TH "pamhomography" 1 "04 December 2022" "netpbm documentation"
.SH "نام (NAME)"
pamhomography \- کشیدن/جمع کردن یک ناحیهٔ چهارضلعی از تصویر به یک شکل چهارضلعی دیگر
.UN SYNOPSIS
.SH "خلاصه دستور (SYNOPSIS)"
.PP
\fBpamhomography\fP
[\fB-from\fP=\fIcoords\fP]
[\fB-to\fP=\fIcoords\fP]
[\fB-mapfile\fP=\fImap_file\fP]
[\fB-view\fP=\fIcoords\fP]
[\fB-fill\fP=\fIcolor\fP]
[\fB-verbose\fP
[\fIpam_file\fP]
.PP
میتوانید هر گزینه را به کوتاهترین پیشوند یکتای آن خلاصه کنید. میتوانید به جای یک خط تیره از دو خط تیره برای مشخص کردن گزینه استفاده کنید. همچنین میتوانید یک گزینه را به جای \f(CW=\fP با نویسه فاصله (whitespace) از مقدار آن جدا نمایید.
.UN DESCRIPTION
.SH "توضیحات (DESCRIPTION)"
.PP
این برنامه بخشی
از
.UR http://netpbm.sourceforge.net
Netpbm
.UE
\& است.
.PP
برنامهٔ \fBpamhomography\fP یک بخش چهارضلعی دلخواه از تصویر ورودی را که شما مشخص میکنید (که لزوماً مستطیلی نیست) کشیده یا فشرده میکند و آن را به یک شکل چهارضلعی جدید مشخصشده توسط شما تبدیل کرده و تصویر جدیدی تولید مینماید.
.PP
شما میتوانید هرگونه
.UR https://en.wikipedia.org/wiki/Affine_transformation#Image_transformation
تبدیل هندسی آفین (affine) تصویر
.UE
\& را انجام دهید: انتقال (جابهجایی)، بازتاب، مقیاسبندی، دوران (چرخش) و کج کردن/اریبسازی (shearing/skewing). با این حال، \fBpamhomography\fP افزون بر این میتواند تبدیلات \fIدوخطی (bilinear)\fP را انجام دهد، به این معنی که میتواند هر چهارضلعی را به هر چهارضلعی دیگر نگاشت کند (بپیچاند)، حتی زمانی که این نگاشت نتواند با یک مجموعه معادلات خطی واحد توصیف شود. این قابلیت میتواند مثلاً برای ایجاد نماهای پرسپکتیو از تصاویر مستطیلی یا برای نگاشت معکوس یک نمای پرسپکتیو به یک تصویر مستطیلی مفید باشد.
.UN OPTIONS
.SH "گزینهها (OPTIONS)"
.PP
علاوه بر گزینههای مشترک بین تمام برنامههای مبتنی بر libnetpbm (بهویژه \fB-quiet\fP، به
.UR index.html#commonoptions
گزینههای عمومی (Common Options)
.UE
\& مراجعه کنید)، \fBpamhomography\fP گزینههای خط فرمان زیر را میشناسد:
.TP
\fB-from\fP=\fIcoords\fP
.sp
چهارضلعی مبدأ را مشخص میکند. \fIcoords\fP فهرستی از چهار مختصات با مقادیر صحیح (\fIx\fP, \fIy\fP) است. اگر مبدأ را با \fB-from\fP یا \fB-mapfile\fP مشخص نکنید، چهارضلعی مبدأ کل تصویر ورودی در نظر گرفته میشود.
.TP
\fB-to\fP=\fIcoords\fP
.sp
چهارضلعی مقصد را مشخص میکند. \fIcoords\fP فهرستی از چهار مختصات با مقادیر صحیح (\fIx\fP, \fIy\fP) است. اگر مقصد را با \fB-to\fP یا \fB-mapfile\fP مشخص نکنید، چهارضلعی مقصد همان کل تصویر ورودی در نظر گرفته میشود.
.TP
\fB-mapfile\fP=\fImap_file\fP
.sp
نام یک فایل متنی را مشخص میکند که نگاشت از چهارضلعی مبدأ به چهارضلعی مقصد را توصیف مینماید. فایل \fImap_file\fP باید شامل هشت مختصات با مقادیر صحیح (\fIx\fP, \fIy\fP) باشد، شامل چهار مختصات مبدأ که به دنبال آنها چهار مختصات متناظر مقصد میآیند، یا اینکه تنها شامل چهار مختصات (\fIx\fP, \fIy\fP) باشد که صرفاً چهار مختصات مقصد هستند. در حالت دوم، چهارضلعی مبدأ برابر با چهار گوشهٔ تصویر ورودی به ترتیب ساعتگرد با شروع از گوشهٔ بالا-چپ در نظر گرفته میشود.
.sp
هر آنچه با \fB-to\fP یا \fB-from\fP مشخص کنید، محتوای این فایل را لغو و جایگزین میکند.
.TP
\fB-view\fP=\fIcoords\fP
.sp
نمای مقصد را مشخص میکند. \fIcoords\fP فهرستی از دو مختصات با مقادیر صحیح (\fIx\fP, \fIy\fP) است: به ترتیب مرزهای بالا-چپ و پایین-راستِ پیکسلهایی که در تصویر خروجی قابل مشاهده خواهند بود. اگر \fB-view\fP مشخص نشود، نمای مقصد دقیقاً با چهارضلعی مقصد منطبق خواهد شد.
.TP
\fB-fill\fP=\fIcolor\fP
.sp
این رنگی است که برنامه با آن تمام پیکسلهای خارج از چهارضلعی مقصد را پر میکند. رنگ را همانطور که برای
.UR libnetpbm_image.html#colorname
آرگومان زیرروال کتابخانهای pnm_parsecolor()
.UE
\& شرح داده شده است مشخص کنید.
.sp
پیشفرض رنگ سیاه است، و برای تصاویری که دارای صفحهٔ شفافیت (transparency plane) هستند، شفاف است.
.TP
\fB-verbose\fP
باعث میشود برنامه پیامهای اطلاعاتی دربارهٔ آنچه در حال انجام آن است صادر کند.
.PP
مختصات معمولاً باید به ترتیب ساعتگرد مشخص شوند. ساختار دستوری نسبتاً انعطافپذیر است: تمام نویسهها به جز علامت مثبت، علامت منفی و ارقام به عنوان جداکننده تلقی میشوند. با اینکه مختصات باید اعداد صحیح باشند، میتوانند خارج از مرزهای تصویر قرار گیرند.
.UN PARAMETERS
.SH "پارامترها (PARAMETERS)"
.PP
تنها پارامتر \fBpamhomography\fP، یعنی \fIpam_file\fP، نام فایلی است که تصویر ورودی را در بر دارد. اگر \fIpam_file\fP را مشخص نکنید، تصویر از ورودی استاندارد خوانده میشود.
.UN NOTES
.SH "نکات (NOTES)"
.PP
تصویر خروجی از همان قالب Netpbm تصویر ورودی استفاده میکند.
.PP
تبدیلات ساده بهتر است توسط برنامههای دیگر Netpbm انجام شوند، مانند برنامههایی که در بخش
.UR #SEE-ALSO
«همچنین ببینید» (SEE ALSO)
.UE
\& در ادامه فهرست شدهاند. از \fBpamhomography\fP برای تبدیلات پیچیدهتر مانند تنظیمات پرسپکتیو، دوران حول یک نقطهٔ دلخواه در تصویر، استخراج چهارضلعیهای غیرمستطیلی، اریبسازی (shearing) با استفاده از مختصات به جای زاویه، و بهطور کلی تمام تبدیلاتی که به سادهترین شکل با نگاشت چهار نقطه از یک تصویر به چهار نقطه در تصویر دیگر بیان میشوند، استفاده کنید.
.UN EXAMPLES
.SH "مثالها (EXAMPLES)"
.PP
مثالهای زیر از تصویر آزمایشی
.UR park_row.ppm
park_row.ppm
.UE
\& استفاده میکنند، که
.UR https://commons.wikimedia.org/wiki/File:15_Park_Row_3.JPG
عکسی از ساختمان پارک رو (Park Row Building) نیویورک
.UE
\& است که در ابعاد ۴۴۱×۶۴۰ مقیاسبندی شده، به یک فایل PPM تبدیل گشته و بر اساس شروط مجوز
.UR https://en.wikipedia.org/wiki/GNU_Free_Documentation_License
GFDL
.UE
\& بازنشر شده است.
.PP
اولین مثال، قدرت واقعی تبدیلات دوخطی (bilinear) را نشان میدهد. با فرض اینکه \fIpark_row_rect.map\fP دارای محتوای زیر باشد:
.nf\f(CW (147, 51) (316, 105) (402, 595) (92, 560)
(0, 0) (440, 0) (440, 639) (0, 639)\fP
.PP
آنگاه
.nf\f(CW pamhomography -mapfile park_row_rect.map park_row.ppm > park_row_rect.ppm\fP
.PP
نمای جلوی ساختمان را از یک نمای پرسپکتیو به یک نمای روبروی مستقیم و مستطیلی تصویر میکند. به یاد داشته باشید که \fBpamhomography\fP پرانتزها و کاماهای استفادهشده در \fIpark_row_rect.map\fP را نادیده میگیرد؛ آنها صرفاً برای خواناتر شدن فایل توسط انسان هستند. میتوانستیم به صورت معادل بنویسیم:
.nf\f(CW 147 51 316 105 402 595 92 560 0 0 440 0 440 639 0 639\fP
.PP
یا هر نوع دیگری از تنوعهای بیشمار.
.PP
برنامهٔ \fBpamhomography\fP میتواند تصویر را به یک ذوزنقه تبدیل کند تا به نظر برسد در فضای سهبعدی به عقب متمایل شده است:
.nf\f(CW pamhomography -to '50,0 390,0 440,200 0,200' park_row.ppm > park_row_trap.ppm\fP
.PP
به عنوان یک مثال بسیار ساده،
.nf\f(CW pamhomography -to '440,0 0,0 0,639 440,639' park_row.ppm > park_row_flip.ppm\fP
.PP
تصویر را از چپ به راست قرینه (معکوس) میکند. توجه داشته باشید که در این حالت مختصات چهارضلعی مقصد به ترتیب پادساعتگرد فهرست شدهاند، زیرا این ترتیب متناظر است با انطباق بین نقاط (0, 0) ↔ (440, 0) و (0, 639) ↔ (639, 0).
.PP
مقیاسبندی نیز سرراست است. دستور زیر ابعاد تصویر را از ۴۴۱×۶۴۰ به ۳۴۱×۵۴۰ کاهش میدهد:
.nf\f(CW pamhomography -to '0,0 340,0 340,539 0,539' park_row.ppm > park_row_small.ppm\fP
.PP
بیایید ۱۰۰ پیکسل کادر خرمایی (tan) به تصویر بالا اضافه کنیم. برای انجام این کار از \fB-view\fP و \fB-fill\fP استفاده میکنیم:
.nf\f(CW pamhomography -to '0,0 340,0 340,539 0,539' -view '-100,-100 440,639' -fill tan park_row.ppm > park_row_small_border.ppm\fP
.PP
میتوانیم بدون نیاز به تغییر مقیاس تصویر، کادر به آن بیفزاییم:
.nf\f(CW pamhomography -view '-100,-100 540,739' -fill tan park_row.ppm > park_row_border.ppm\fP
.PP
گزینهٔ \fB-view\fP همچنین میتواند برای استخراج یک مستطیل از یک تصویر و دور ریختن بقیهٔ تصویر استفاده شود:
.nf\f(CW pamhomography -view '130,10 205,80' park_row.ppm > park_row_cut.ppm\fP
.PP
تعیین همان مجموعه مختصات برای \fB-from\fP و \fB-to\fP همان اثر را دارد، اما افزون بر این به شما امکان میدهد چهارضلعیهای غیرمستطیلی را از یک تصویر استخراج کنید:
.nf\f(CW pamhomography -from '185,300 310,325 320,425 180,405' -to '185,300 310,325 320,425 180,405' park_row.ppm > park_row_cut_2.ppm\fP
.PP
دوران امکانپذیر است اما نیازمند اندکی تلاش است. چالش اینجاست که خودتان باید مختصات دورانیافته را محاسبه کنید. عبارت ماتریسی برای دوران ساعتگرد نقاط \e((x_1, y_1)\e)، \e((x_2, y_2)\e)، \e((x_3, y_3)\e) و \e((x_4, y_4)\e) به اندازهٔ \e(\etheta\e) درجه حول نقطهٔ \e((c_x, c_y)\e) برابر است با:
.PP
\e[ \ebegin{bmatrix} 1 & 0 & c_x \e\e 0 & 1 & c_y \e\e 0 & 0
& 1 \eend{bmatrix} \ebegin{bmatrix} \ecos \etheta & -\esin \etheta & 0
\e\e \esin \etheta & \ecos \etheta & 0 \e\e 0 & 0 & 1 \eend{bmatrix}
\ebegin{bmatrix} 1 & 0 & -c_x \e\e 0 & 1 & -c_y \e\e 0 & 0
& 1 \eend{bmatrix} \ebegin{bmatrix} x_1 & x_2 & x_3 & x_4 \e\e y_1
& y_2 & y_3 & y_4 \e\e 1 & 1 & 1 & 1 \eend{bmatrix}
\equad. \e]
.PP
به عنوان مثال، برای دوران ۳۰ درجه ساعتگرد فایل \fIpark_row.ppm\fP حول (220, 320) این عبارت را محاسبه میکنید:
.PP
\e[ \ebegin{bmatrix} 1 & 0 & 220 \e\e 0 & 1 & 320 \e\e 0 & 0
& 1 \eend{bmatrix} \ebegin{bmatrix} \ecos 30^{\ecirc} & -\esin 30^{\ecirc}
& 0 \e\e \esin 30^{\ecirc} & \ecos 30^{\ecirc} & 0 \e\e 0 & 0 & 1
\eend{bmatrix} \ebegin{bmatrix} 1 & 0 & -220 \e\e 0 & 1 & -320 \e\e
0 & 0 & 1 \eend{bmatrix} \ebegin{bmatrix} 0 & 440 & 440 & 0
\e\e 0 & 0 & 639 & 639 \e\e 1 & 1 & 1 & 1 \eend{bmatrix} =
\ebegin{bmatrix} 189.4744 & 570.5256 & 251.0256 & -130.0256 \e\e
-67.1281 & 152.8719 & 706.2621 & 486.2621 \e\e 1.0000 & 1.0000
& 1.0000 & 1.0000 \eend{bmatrix} \equad, \e]
.PP
این مختصات را به نزدیکترین اعداد صحیح گرد کنید، ماتریس را ترانهاده (transpose) کنید، و فایل نگاشت زیر را با نام \fIpark_row_rot30.map\fP تولید نمایید:
.nf\f(CW 189 -67
571 153
251 706
-130 486\fP
.PP
(اینها مختصات 'to' هستند؛ ما از مختصات پیشفرض و تمامتصویر 'from' استفاده میکنیم.) سپس نگاشت همانند تمام مثالهای قبلی عمل میکند:
.nf\f(CW pamhomography -mapfile park_row_rot30.map park_row.ppm > park_row_rot30.ppm\fP
.UN SEE-ALSO
.SH "همچنین ببینید (SEE ALSO)"
.IP \(bu
.BR "pamcut" (1)\c
\&
.IP \(bu
.BR "pamenlarge" (1)\c
\&
.IP \(bu
.BR "pamflip" (1)\c
\&
.IP \(bu
.BR "pamperspective" (1)\c
\&
.IP \(bu
.BR "pamscale" (1)\c
\&
.IP \(bu
.BR "pamstretch" (1)\c
\&
.IP \(bu
.BR "pam" (1)\c
\&
.IP \(bu
.BR "pnmmargin" (1)\c
\&
.IP \(bu
.BR "pnmpad" (1)\c
\&
.IP \(bu
.BR "pnmrotate" (1)\c
\&
.IP \(bu
.BR "pnmshear" (1)\c
\&
.UN HISTORY
.SH "تاریخچه (HISTORY)"
.PP
برنامهٔ \fBpamhomography\fP در Netpbm نسخهٔ 10.94 (مارس 2021) معرفی شد.
.UN AUTHOR
.SH "نویسنده (AUTHOR)"
.PP
حق نشر \(co ۲۰۲۰ متعلق به اسکات پاکین (Scott Pakin)، \fIscott+pbm@pakin.org\fP
.UN index
.SH "فهرست مطالب (Table of Contents)"
.IP \(bu
.UR #SYNOPSIS
خلاصه دستور (SYNOPSIS)
.UE
\&
.IP \(bu
.UR #DESCRIPTION
توضیحات (DESCRIPTION)
.UE
\&
.IP \(bu
.UR #OPTIONS
گزینهها (OPTIONS)
.UE
\&
.IP \(bu
.UR #PARAMETERS
پارامترها (PARAMETERS)
.UE
\&
.IP \(bu
.UR #NOTES
نکات (NOTES)
.UE
\&
.IP \(bu
.UR #EXAMPLES
مثالها (EXAMPLES)
.UE
\&
.IP \(bu
.UR #SEE-ALSO
همچنین ببینید (SEE ALSO)
.UE
\&
.IP \(bu
.UR #HISTORY
تاریخچه (HISTORY)
.UE
\&
.IP \(bu
.UR #AUTHOR
نویسنده (AUTHOR)
.UE
\&
.SH "منبع مستندات (DOCUMENT SOURCE)"
این صفحه راهنما توسط ابزار Netpbm تحت عنوان 'makeman' از منبع HTML تولید شده است. مستندات اصلی در آدرس زیر قرار دارد:
.IP
.B http://netpbm.sourceforge.net/doc/pamhomography.html
.PP