Pamrubber User Manual(0) Pamrubber User Manual(0)

pamrubber - ابزار کشش صفحه‌ای برای تغییر شکل و کشیدن تصویر بر اساس نقاط کنترل

pamrubber {-tri | -quad} [-linear] [-frame] [-randomseed=N] cp1x cp1y [cp2x cp2y [cp3x cp3y [cp4x cp4y]]] cp1x cp1y [cp2x cp2y [cp3x cp3y [cp4x cp4y]]] [filename]

کوتاه‌ترین مخفف یکتای گزینه‌ها پذیرفته می‌شود. همچنین می‌توانید به‌جای یک خط تیره، از دو خط تیره برای مشخص کردن گزینه‌ها استفاده کنید.

این برنامه بخشی از Netpbm(1) است.

ابزار pamrubber یک تصویر pam را به تصویری جدید تبدیل می‌کند که محتویات آن جابه‌جا شده‌اند. این تبدیل معمولاً «کشش صفحه‌ای» (rubber sheeting) نامیده می‌شود: شما نقاط کنترل (CP) را روی تصویر مبدأ مشخص کرده و مکان‌های جدیدی را برای آن نقاط در تصویر مقصد تعیین می‌کنید. pamrubber تمام پیکسل‌ها را جابه‌جا کرده و در صورت نیاز آن‌ها را می‌کشد یا فشرده می‌کند، گویی تصویر اصلی روی یک صفحه لاستیکی کشسان قرار دارد و شما آن صفحه را می‌کشید تا نقاط کنترل به مکان‌های جدید خود منتقل شوند.

تصویر جدید ابعاد و قالب یکسانی با تصویر اصلی دارد.

این تبدیل می‌تواند به دو روش کاملاً متفاوت انجام شود که «quad» (چهارضلعی) و «tri» (مثلثی) نامیده می‌شوند. در روش اول، باید چهار نقطه کنترل (هم برای مبدأ و هم برای مقصد) مشخص کنید. این‌ها گوشه‌های دو چهارضلعی هستند که به عنوان دستگاه مختصات برای هر دو تصویر مبدأ و مقصد عمل می‌کنند؛ آن‌ها را مانند نقاط غیرمتعامد (0,0)، (0,1)، (1,0) و (1,1) در نظر بگیرید. این تبدیل شباهت زیادی به تبدیل انجام‌شده توسط pamperspective دارد، هرچند آن برنامه تصحیحات دیگری را نیز اعمال می‌کند.

هنگامی که کمتر از چهار نقطه کنترل مشخص می‌کنید، برنامه نقاط کنترل را به روش زیر اضافه می‌کند. با سه نقطه کنترل، pamrubber نقطه چهارم را به گونه‌ای انتخاب می‌کند که چهار نقطه یک متوازی‌الاضلاع را تشکیل دهند. با دو نقطه، pamrubber آن‌ها را گوشه‌های روبه‌روی یک مستطیل در نظر می‌گیرد. هنگامی که تنها یک نقطه کنترل مشخص می‌کنید، pamrubber از مستطیلی از گوشه بالا سمت چپ تصویر تا همان تک نقطه کنترل استفاده می‌کند.

در حالت «tri»، برنامه pamrubber به صورت مفهومی تصاویر مبدأ و مقصد را به مثلث‌هایی برش می‌دهد و تبدیل را درون هر جفت مثلث متناظر به شکلی کششی اعمال می‌کند؛ درست مانند کشیدن سه گوشه مثلث. در این حالت، هر پیکسل در تصویر مبدأ به موقعیتی در تصویر مقصد نگاشت می‌شود و هیچ پیکسلی از دست نمی‌رود.

در حالت «tri»، اگر تنها یک نقطه کنترل در تصاویر مبدأ و مقصد مشخص کنید، pamrubber چهار مثلث از این نقطه به چهار گوشه تصویر ایجاد می‌کند. با دو نقطه، برنامه شش مثلث از دو سر خط متصل‌کننده آن دو نقطه به چهار گوشه تصویر می‌سازد. سه نقطه کنترل به نوعی هسته اصلی این ابزار در حالت «tri» به شمار می‌رود؛ بین سه ضلع مثلث مرکزی و چهار لبه تصویر، pamrubber هفت مثلث دیگر ایجاد می‌کند. چهار نقطه کنترل نیز دو مثلث متصل به هم در مرکز تعریف می‌کنند. در مجموع، این حالت منجر به تقسیم تصاویر مبدأ و مقصد به ده مثلث می‌شود.

در این مورد مسلماً یک تصویر گویاتر از هزار کلمه است. تصویرسازی گرافیکی این حالت‌های گوناگون در نشانی زیر موجود است:
www.schaik.com/netpbm/rubber
. نمونه‌ای از چگونگی استفاده از این نوع کشش صفحه‌ای در نقشه‌نگاری (کارتوگرافی) در این مقاله آمده است:
Visualizing the Landscape of Old-Time Tokyo
.

پارامترها همان نقاط کنترل (cp) به صورت جفت‌های x و y هستند. تصاویر مبدأ و مقصد باید تعداد نقاط کنترل یکسانی داشته باشند. حداقل تعداد مقادیر مشخص‌شده در اینجا ۴ است که مربوط به یک نقطه کنترل منفرد در تصویر مبدأ و مقصد می‌شود. حداکثر تعداد ۱۶ است که برای چهار نقطه کنترل در هر تصویر به کار می‌رود.

پارامتر filename نام فایل ورودی است. اگر آن را مشخص نکنید، pamrubber تصویر را از ورودی استاندارد (Standard Input) می‌خواند.

علاوه بر گزینه‌های مشترک میان تمامی برنامه‌های مبتنی بر libnetpbm (به‌ویژه -quiet، به
گزینه‌های مشترک (Common Options)
مراجعه کنید)، pamrubber گزینه‌های خط فرمان زیر را می‌شناسد:

نوع کشش صفحه‌ای مورد نظر را انتخاب می‌کند. باید دقیقاً یکی از این گزینه‌ها را مشخص کنید.

مشخص می‌کند که pamrubber از درون‌یابی نزدیک‌ترین همسایه (nearest neighbor) استفاده کند یا از درون‌یابی دوخطی (bilinear) چهار پیکسل مبدأ.

این گزینه باعث می‌شود pamrubber اضلاع چهارضلعی‌ها یا مثلث‌های مورد استفاده برای کشش را بر روی تصویر مقصد ترسیم کند. برای داشتن همین خطوط روی تصویر مبدأ، از تبدیلی در pamrubber با نقاط کنترل یکسان برای مبدأ و مقصد استفاده کنید.

برنامه pamrubber بخشی از خروجی خود را تصادفی‌سازی می‌کند. برای اینکه بتوانید نتایج تکرارپذیر تولید کنید، می‌توانید بذر (seed) مولد اعداد تصادفی را با این گزینه تعیین نمایید. اگر از همان تصویر ورودی و همان بذر مولد اعداد تصادفی استفاده کنید، همیشه دقیقاً همان خروجی را دریافت خواهید کرد. به صورت پیش‌فرض، pamrubber از زمان روز به عنوان بذر استفاده می‌کند، بنابراین اجرای دوباره برنامه روی ورودی یکسان، خروجی اندکی متفاوت تولید خواهد کرد.

پیش از نسخه Netpbm 10.61 (دسامبر ۲۰۱۲)، این گزینه -randseed نام داشت که همچنان کار می‌کند.

pam(1) و pamperspective(1)

ابزار pamrubber در Netpbm 10.54 (مارس ۲۰۱۱) به عنوان ابزاری جدید معرفی شد.

Willem van Schaik این برنامه را در فوریه ۲۰۱۱ نوشت و به Netpbm اهدا کرد.

این صفحه راهنما توسط ابزار Netpbm با نام 'makeman' از کد منبع HTML تولید شده است. مستندات اصلی در نشانی زیر قرار دارد:

http://netpbm.sourceforge.net/doc/pamrubber.html
February 2011 netpbm documentation