Pamcomp User Manual(0) Pamcomp User Manual(0)

pamcomp - ترکیب (روی هم انداختن) دو تصویر Netpbm با یکدیگر

pamcomp

[-align={left | center | right | beyondleft | beyondright}] [-valign={top | middle | bottom| above | below}] [-xoff=X] [-yoff=Y] [-alpha=alpha-pgmfile] [-invert] [-opacity=opacity] [-mixtransparency] [-linear] overlay_file [underlying_file [output_file]]

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

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

برنامه pamcomp دو تصویر را می‌خواند و تصویری ترکیبی تولید می‌کند که در آن یکی از تصاویر بر روی دیگری قرار گرفته است (احتمالاً همراه با نیمه‌شفافی). تصاویر نیازی نیست که هم‌اندازه باشند. فایل‌های ورودی و خروجی در قالب Netpbm هستند.

در ساده‌ترین کاربرد، pamcomp تصویر موجود در فایل overlay_file را روی تصویر موجود در فایل underlying_file قرار می‌دهد و بخشی از underlying_file را که زیر آن قرار می‌گیرد، مسدود (پوشانده) می‌کند.

اگر گزینه -alpha را اضافه کنید، pamcomp از تصویر موجود در فایل alpha-pgmfile به عنوان یک ماسک شفافیت (transparency mask) استفاده می‌کند، بدین معنا که میزان شفافیت هر نقطه از تصویر رویی را تعیین می‌نماید. ماسک شفافیت باید ابعادی مشابه تصویر رویی داشته باشد. در نقاطی که ماسک شفافیت تصویر رویی را کدر (opaque) تعریف کند، خروجی ترکیبی فقط محتوای تصویر رویی را شامل می‌شود؛ تصویر زیرین کاملاً پوشانده می‌شود. در نقاطی که ماسک شفافیت تصویر رویی را شفاف (transparent) تعریف کند، خروجی ترکیبی هیچ بخشی از تصویر رویی را شامل نمی‌شود و تصویر زیرین به‌طور کامل نمایان می‌گردد. در نقاطی که ماسک شفافیت مقداری بین کدر و شفاف (نیمه‌شفافی یا translucence) نشان دهد، تصویر ترکیبی شامل مخلوطی از تصویر رویی و تصویر زیرین خواهد بود و سطح نیمه‌شفافی مشخص می‌کند چه مقداری از هر کدام ترکیب شود.

ماسک شفافیت یک فایل PGM است که در آن پیکسل سفید نمایانگر کدر بودن و پیکسل سیاه نمایانگر شفاف بودن است. هر مقداری بین این دو، نیمه‌شفاف است. (مانند هر برنامه Netpbm، pamcomp با فایل PBM طوری رفتار می‌کند که گویی PGM است).

اگر تصویر رویی یک تصویر PAM با نوع تاپل RGB_ALPHA یا GRAYSCALE_ALPHA باشد، خود تصویر رویی شامل اطلاعات شفافیت است و pamcomp از آن به همان روش ماسک شفافیت توصیف‌شده در بالا استفاده می‌کند. اگر هم یک تصویر رویی حاوی اطلاعات شفافیت و هم یک ماسک شفافیت ارائه دهید، pamcomp دو مقدار کدری را در یکدیگر ضرب می‌کند تا کدری نهایی پیکسل رویی را به دست آورد.

قبل از Netpbm نسخه 10.25 (اکتبر ۲۰۰۴)، برنامه pamcomp اطلاعات شفافیت موجود در یک تصویر PAM را شناسایی نمی‌کرد و فقط آن را نادیده می‌گرفت. بنابراین کاربران مجبور بودند برای داشتن یک تصویر روییِ غیرکدر، ماسک‌های شفافیت مناسب ایجاد کنند. برخی از برنامه‌های Netpbm که قالب‌های تصویری حاوی اطلاعات شفافیت را تبدیل می‌کنند، قادر به ایجاد خروجی PAM با نوع RGB_ALPHA یا GRAYSCALE_ALPHA نیستند؛ بنابراین باید از روش قدیمی استفاده کنید: اطلاعات شفافیت را از تصویر اصلی در یک ماسک شفافیت جداگانه استخراج کرده و از آن به عنوان ورودی برای pamcomp استفاده نمایید.

تصویر خروجی همیشه دارای ابعادی مشابه تصویر زیرین است. pamcomp تنها از بخش‌هایی از تصویر رویی استفاده می‌کند که در محدوده تصویر زیرین جای می‌گیرند.

تصویر خروجی یک تصویر PAM است. تاپل‌های آن رنگی، مقیاس خاکستری، یا سیاه و سفید هستند؛ هر کدام که قالب «بالاتر» میان دو تصویر ورودی باشد. مقدار maxval خروجی برابر با کوچک‌ترین مضرب مشترک (ک.م.م) مقادیر maxval تصاویر ورودی است، حداکثر تا بیشترین مقدار ممکن maxval در PAM یعنی ۶۵۵۳۵.

خروجی فقط در صورتی دارای کانال کدری (opacity channel) خواهد بود که تصویر زیرین دارای آن باشد، و در آن حالت نیز مقادیر کدری همان‌گونه خواهد بود که ذیل گزینه -mixtransparency توضیح داده شده است. پیش از Netpbm نسخه 10.56 (سپتامبر ۲۰۱۱)، خروجی هرگز کانال کدری نداشت.

برای تعیین محل قرارگیری تصویر رویی بر روی تصویر زیرین، از گزینه‌های -align، -valign، -xoff و -yoff استفاده کنید. بدون این گزینه‌ها، موقعیت افقی پیش‌فرض چسبیده به چپ و موقعیت عمودی پیش‌فرض چسبیده به بالا است.

تصویر رویی در موقعیتی که مشخص می‌کنید نیازی نیست به طور کامل در محدوده تصویر زیرین جای بگیرد. pamcomp تنها از بخش‌هایی از تصویر رویی استفاده می‌کند که روی تصویر زیرین قرار می‌گیرند. این امکان وجود دارد که موقعیت را به گونه‌ای مشخص کنید که هیچ بخشی از تصویر رویی روی تصویر زیرین قرار نگیرد (یعنی تصویر رویی خارج از کادر باشد). در این صورت، pamcomp یک هشدار صادر می‌کند.

تصویر رویی و تصویر زیرین ممکن است قالب‌های متفاوتی داشته باشند (مثلاً انداختن یک تصویر متنی PBM روی یک تصویر تمام‌رنگی PPM) و مقادیر maxval متفاوتی داشته باشند. تصویر خروجی دارای قالب عمومی‌تر میان دو قالب ورودی خواهد بود و مقدار maxval آن برابر با کوچک‌ترین مضرب مشترک دو مقدار maxval است (یا بیشترین maxval مجاز در آن قالب، در صورتی که ک.م.م از آن بیشتر شود).

آرگومان overlay_file نام فایلی است که حاوی تصویر رویی است، در حالی که underlying_file نام فایلی است که حاوی تصویر زیرین است. برای هر یک، می‌توانید '-' را برای اشاره به ورودی استاندارد مشخص کنید، و underlying_file به‌طور پیش‌فرض ورودی استاندارد است. دقت کنید که ورودی استاندارد را برای هر دو (یا به عنوان پیش‌فرض هر دو) مشخص نکنید.

توجه داشته باشید که ممکن است یک فایل ورودی سوم نیز وجود داشته باشد که با گزینه -alpha مشخص می‌شود.

آرگومان output_file نام فایلی است که pamcomp خروجی را در آن می‌نویسد و ابتدا آن را ایجاد یا کوتاه (truncate) می‌کند. می‌توانید '-' را برای اشاره به خروجی استاندارد مشخص کنید، که در این حالت pamcomp آن را کوتاه نمی‌کند. توجه داشته باشید که داشتن آرگومان فایل خروجی، به دلیل یک پیشامد تاریخی، در میان برنامه‌های Netpbm برای pamcomp نامعمول است؛ برنامه‌های Netpbm معمولاً فقط در خروجی استاندارد می‌نویسند.

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

این گزینه موقعیت افقی پایه تصویر رویی را نسبت به تصویر زیرین، با نحوی مشابه HTML انتخاب می‌کند. left به معنای چسبیده به چپ، center به معنای وسط‌چین، و right به معنای چسبیده به راست است.

گزینه -xoff این موقعیت را تغییر می‌دهد.

مقدار beyondleft به معنای درست بیرون از کادر در سمت چپ است -- لبه راست تصویر رویی مماس بر لبه چپ تصویر زیرین قرار می‌گیرد. مقدار beyondright به معنای درست بیرون از کادر در سمت راست است. این ترازبندی‌ها تنها در صورتی مفید هستند که گزینه -xoff را نیز اضافه کنید. این دو مقدار در Netpbm نسخه 10.10 (اکتبر ۲۰۰۲) اضافه شدند.

پیش‌فرض left است.

این گزینه موقعیت عمودی پایه تصویر رویی را نسبت به تصویر زیرین، با نحوی مشابه HTML انتخاب می‌کند. top به معنای چسبیده به بالا، middle به معنای میانه‌چین، و bottom به معنای چسبیده به پایین است.

گزینه -yoff این موقعیت را تغییر می‌دهد.

مقدار above به معنای درست بیرون از کادر در بالا است -- لبه پایین تصویر رویی مماس بر لبه بالای تصویر زیرین قرار می‌گیرد. مقدار below به معنای درست بیرون از کادر در پایین است. این ترازبندی‌ها تنها در صورتی مفید هستند که گزینه -yoff را نیز اضافه کنید. این دو مقدار در Netpbm نسخه 10.10 (اکتبر ۲۰۰۲) اضافه شدند.

پیش‌فرض top است.

این گزینه موقعیت افقی تصویر رویی را نسبت به تصویر زیرین که توسط گزینه -align انتخاب شده است تغییر می‌دهد. pamcomp تصویر رویی را از آن موقعیت پایه به اندازه x پیکسل به سمت راست جابه‌جا می‌کند. x می‌تواند منفی باشد تا جابه‌جایی به سمت چپ را نشان دهد.

تصویر رویی نیازی نیست به طور کامل (یا اصلاً) روی تصویر زیرین قرار گیرد. pamcomp تنها از بخش‌هایی استفاده می‌کند که بر روی تصویر زیرین قرار می‌گیرند.

پیش از Netpbm نسخه 10.10 (اکتبر ۲۰۰۲)، گزینه -xoff با -align ناسازگار (مانعة‌الجمع) بود و همیشه از لبه چپ اندازه گرفته می‌شد.

این گزینه موقعیت عمودی تصویر رویی را نسبت به تصویر زیرین که توسط گزینه -valign انتخاب شده است تغییر می‌دهد. pamcomp تصویر رویی را از آن موقعیت پایه به اندازه y پیکسل به سمت پایین جابه‌جا می‌کند. y می‌تواند منفی باشد تا جابه‌جایی به سمت بالا را نشان دهد.

تصویر رویی نیازی نیست به طور کامل (یا اصلاً) روی تصویر زیرین قرار گیرد. pamcomp تنها از بخش‌هایی استفاده می‌کند که بر روی تصویر زیرین قرار می‌گیرند.

پیش از Netpbm نسخه 10.10 (اکتبر ۲۰۰۲)، گزینه -yoff با -valign ناسازگار (مانعة‌الجمع) بود و همیشه از لبه بالا اندازه گرفته می‌شد.

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

می‌توانید - را به عنوان مقدار این گزینه مشخص کنید تا ماسک شفافیت از ورودی استاندارد خوانده شود. در صورت انجام این کار، ورودی استاندارد را به عنوان منبع هیچ تصویر ورودی دیگری مشخص نکنید.

این گزینه جهت مقادیر موجود در ماسک شفافیت را معکوس می‌کند که عملاً نقش تصویر رویی و تصویر زیرین را در نقاط تلاقی آن‌ها با یکدیگر تعویض می‌نماید.
این گزینه مشخص می‌کند که تصویر رویی چقدر باید کدر باشد؛ یعنی چه مقدار از تصویر ترکیبی باید از تصویر رویی باشد در مقایسه با تصویر زیرین. opacity یک عدد ممیز شناور است که 1.0 یعنی تصویر رویی کاملاً کدر است و 0.0 یعنی کاملاً شفاف است. پیش‌فرض 1.0 است.

اگر یک ماسک شفافیت (گزینه -alpha) مشخص کنید، pamcomp از حاصل‌ضرب کدریِ نشان‌داده‌شده توسط ماسک شفافیت (به صورت کسر، پس از اعمال تغییرات احتمالی گزینه -invert) و این مقدار کدری استفاده می‌کند. گزینه -invert روی این مقدار کدری اعمال نمی‌شود.

به عنوان یک مقدار کدری ساده، این مقدار تنها زمانی منطقی است که بین 0 و 1 (شامل هر دو) باشد. با این حال، pamcomp تمام مقادیر را می‌پذیرد و محاسبات حسابی یکسانی را با هر مقداری که ارائه دهید انجام می‌دهد. مقدار کدری کمتر از صفر به این معنی است که تصویر زیرین تشدید شده و سپس تصویر رویی از آن «تفریق» می‌شود. مقدار کدری بزرگ‌تر از یک به این معنی است که تصویر رویی تشدید شده و تصویر زیرین از آن تفریق می‌شود. در هر دو حالت، pamcomp شدت مؤلفه‌های رنگ حاصل را محدود (clip) می‌کند تا نامنفی باشند و از maxval تصویر خروجی فراتر نروند.

شاید این کار عجیب به نظر برسد، اما کاربردهایی دارد. می‌توانید از آن برای روشن‌تر کردن، تیره‌تر کردن، اشباع کردن یا غیراشباع کردن بخش‌هایی از تصویر زیرین استفاده کنید. برای این توضیحات(1) درباره این روش مراجعه فرمایید.

این گزینه در Netpbm نسخه 10.6 (ژوئیه ۲۰۰۲) اضافه شد. پیش از Netpbm نسخه 10.15 (آوریل ۲۰۰۳)، مقادیر کمتر از صفر یا بزرگ‌تر از یک مجاز نبودند.

این گزینه مشخص می‌کند زمانی که هم تصویر زیرین و هم تصویر رویی غیرکدر هستند، pamcomp چه کاری انجام دهد.

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

اما با این گزینه، pamcomp تصویر را طبق استعاره اسلایدهای شفاف پلاستیکی ترکیب می‌کند: تصاویر زیرین و رویی اسلایدهای پلاستیکی هستند. تصویر خروجی اسلایدی است که از روی هم قرار دادن آن دو اسلاید به دست می‌آورید. بنابراین، شفافیت خروجی ترکیبی از شفافیت ورودی‌ها است و شفافیت تصویر زیرین بر سهم تصویر زیرین در رنگ تصویر خروجی اثر می‌گذارد.

برخلاف اسلاید استعاری، یک پیکسل PAM حتی در جایی که کاملاً شفاف است دارای رنگ می‌باشد؛ بنابراین pamcomp در آن حالت از استعاره فاصله می‌گیرد و رنگ خروجی را همسان با تصویر زیرین قرار می‌دهد.

این گزینه در Netpbm نسخه 10.56 (سپتامبر ۲۰۱۱) جدید بود. پیش از آن، خروجی همواره کدر بود و pamcomp شفافیت تصویر زیرین را نادیده می‌گرفت.

این گزینه نشان می‌دهد که ورودی‌ها تصاویر واقعی Netpbm نیستند، بلکه یک گونه متناسب با شدت نور هستند. این موضوع تنها زمانی اهمیت دارد که پیکسل‌ها را با استفاده از گزینه -opacity یا یک ماسک شفافیت (گزینه -alpha) مخلوط می‌کنید.

ماسک شفافیت و مقادیر -opacity کسری از شدت نور یک پیکسل را مشخص می‌کنند. اما قالب‌های تصویر PNM و PAM معادل PNM، شدت‌ها را با اعداد تنظیم‌شده با گاما (gamma-adjusted) نمایش می‌دهند که به صورت خطی متناسب با شدت نور نیستند. بنابراین، pamcomp به طور پیش‌فرض روی هر نمونه خوانده‌شده از ورودی و هر نمونه نوشته‌شده در خروجی محاسباتی انجام می‌دهد تا تبدیل بین این اعداد تنظیم‌شده با گاما و اعداد متناسب با شدت داخلی را انجام دهد.

گاهی اوقات شما با تصاویر واقعی PNM یا PAM کار نمی‌کنید، بلکه با گونه‌ای کار می‌کنید که مقادیر نمونه در آن‌ها مستقیماً متناسب با شدت نور هستند. در این صورت، از گزینه -linear استفاده کنید تا این موضوع را به pamcomp اطلاع دهید. سپس pamcomp از این تبدیل‌ها صرف‌نظر می‌کند.

انجام تبدیل زمان‌بر است. همچنین تفاوت بین مقادیر متناسب با شدت و مقادیر تنظیم‌شده با گاما ممکن است به اندازه کافی کوچک باشد که اگر وانمود کنید مقادیر تنظیم‌شده با گاما در واقع متناسب با شدت هستند، به ندرت تفاوتی در نتیجه مشاهده کنید. بنابراین صرفاً برای صرفه‌جویی در زمان، با چشم‌پوشی از مقداری کیفیت تصویر، می‌توانید حتی زمانی که ورودی PPM واقعی دارید و انتظار خروجی PPM واقعی دارید نیز -linear را مشخص کنید.

در ۱۳ سال اول عمر Netpbm، تا نسخه 10.20 (ژانویه ۲۰۰۴)، برنامه پیشین pamcomp یعنی pnmcomp همیشه با نمونه‌های PPM طوری رفتار می‌کرد که گویی متناسب با شدت نور هستند حتی با اینکه نبودند، و شکایات اندکی را در پی داشت. بنابراین اگر سرعت برای شما اهمیت دارد، استفاده از -linear به عنوان یک ساده‌سازی عمدی، اقدامی معقول است.

روش دیگری که می‌توانید در نظر بگیرید این است که تصویر PNM خود را با استفاده از pnmgamma به گونه خطی تبدیل کنید، pamcomp و سایر تبدیل‌هایی را که به PNM خطی نیاز دارند روی آن اجرا کنید، و سپس آن را با pnmgamma -ungamma دوباره به PNM واقعی بازگردانید. برنامه pnmgamma اغلب در انجام این تبدیل سریع‌تر از pamcomp عمل می‌کند.

pammixmulti.html(1) دو یا چند تصویر هم‌اندازه را به روش‌های گوناگون با یکدیگر مخلوط می‌کند.

ppmmix(1) و pnmpaste(1) نسخه‌های ساده‌تر و کم‌عمومی‌تر از همین ابزار هستند.

ppmcolormask(1) و pbmmask(1)، و pambackground(1) می‌توانند در تولید یک ماسک شفافیت کمک کنند.

pnmcomp(1) یک برنامه قدیمی‌تر است که سریع‌تر اجرا می‌شود اما قابلیت‌های کمتری دارد.

pnm(1)

برنامه pamcomp در Netpbm نسخه 10.21 (مارس ۲۰۰۴) جدید بود. برنامه پیشین آن، pnmcomp، یکی از نخستین برنامه‌هایی بود که در سال ۱۹۹۳ هنگامی که پروژه جهانی شد، به Netpbm اضافه شد.

حق نشر (C) ۱۹۹۲ توسط David Koblas (koblas@mips.com).

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

http://netpbm.sourceforge.net/doc/pamcomp.html
13 August 2011 netpbm documentation