راهنمای کاربری Pnmgamma(1) General Commands Manual راهنمای کاربری Pnmgamma(1)

pnmgamma - اصلاح و تصحیح گامای رنگی تصاویر Netpbm

pnmgamma {
-bt709tolinear |
-lineartobt709 |
-bt709tosrgb |
-srgbtobt709 } [-gamma=float] [-rgamma=float] [-ggamma=float] [-bgamma=float]

[pnmfile]

pnmgamma [
-bt709ramp |
-srgbramp ] [-ungamma] [{gamma | redgamma greengamma bluegamma} [pnmfile]]

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

برنامه pnmgamma تنظیم و اصلاح گاما را روی تصاویر شبه-PNM انجام می‌دهد.

مشخصات قالب PPM تعیین می‌کند که مقادیر نمونه‌برداری معین در یک فایل، بیانگر شدت‌های نوری خاصی در تصویر هستند. به‌طور ویژه، آن‌ها مشخص می‌کنند که مقادیر نمونه‌ها مستقیماً متناسب با روشنایی (Luminance) تعریف‌شده در استاندارد توصیه‌نامه ITU-R BT.709 هستند. روشنایی BT.709 به عنوان تابعی از تابش نوری (Radiance)، یک تابع توانی است که با یک شیب خطی در نزدیکی رنگ مشکی اصلاح شده است.

با این حال، گاهی افراد با تقریب‌هایی از PPM و PGM کار می‌کنند که در آن‌ها مقادیر نمونه‌ها شدت نور را به روش‌های متفاوتی نشان می‌دهند:

در یک تغییر رایج، مقدار نمونه مستقیماً با تابش نوری متناسب است (که اغلب «شدت خطی» یا linear intensity نامیده می‌شود).

تغییر محبوب دیگر این است که نمونه‌ها متناسب با روشنایی تعریف‌شده توسط استاندارد SRGB کمیسیون بین‌المللی الکتروتکنیک (IEC) تنظیم شوند. تابع انتقال گامای SRGB مانند BT.709 است، با این تفاوت که ثوابت متفاوتی در آن به کار رفته است.

توجه داشته باشید که SRGB اغلب به‌صورت «sRGB» نوشته می‌شود. با این حال، در این مستند از نگارش استاندارد استفاده شده است.

برنامه pnmgamma به شما امکان می‌دهد تابع انتقال گاما را دستکاری کنید و در نتیجه با فایل‌های شبه-PPM که برای اهداف مختلف مفید هستند کار کرده یا آن‌ها را ایجاد کنید.

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

وضعیت برای تصاویر PGM نیز مشابه است. همچنین pnmgamma با تصاویر PBM مانند تصاویر PGM رفتار می‌کند.

هنگامی که یک تصویر شبه-PPM متناسب با تابش را به برنامه نمایشی می‌دهید که انتظار یک PPM واقعی را دارد، تصویر تاریک‌تر از حد انتظار نمایش داده می‌شود؛ بنابراین pnmgamma اثر روشن کردن تصویر را دارد. هنگامی که یک PPM واقعی را به برنامه نمایشی می‌دهید که انتظار مقادیر نمونه متناسب با تابش را دارد و بنابراین خود اقدام به تنظیم گاما روی آن‌ها می‌کند، تصویر روشن‌تر از حد انتظار دیده می‌شود؛ بنابراین استفاده از pnmgamma با مقدار گامای کمتر از یک (معکوس ضربی هر مقدار گامایی که برنامه نمایشگر استفاده می‌کند) اثر تاریک کردن تصویر را خواهد داشت.

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

اگر از -bt709ramp (یا معادل آن -cieramp) یا -srgbramp استفاده کنید یا اگر اصلاً هیچ تابع انتقالی را تعیین نکنید (و در نتیجه مقدار پیش‌فرض نمایی ساده اعمال شود)، از ساختار قدیمی استفاده می‌کنید. در غیر این صورت، از ساختار جدید استفاده خواهید کرد.

در ساختار قدیمی، می‌توانید یک مقدار گامای تکی، ۳ مقدار گامای جداگانه (قرمز، سبز و آبی) یا هیچ مقداری تعیین نکنید. در هر صورت، معانی این پارامترها مشابه گزینه‌های مدرن‌تر -gamma، -rgamma، -ggamma و -bgamma است که در زیر توضیح داده شده‌اند.

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

تبدیل تصویر از روشنایی BT.709 به تابش نوری. یعنی تبدیل از PPM یا PGM واقعی به یک گونه خطی تابشی که می‌تواند با ابزارهای خاصی که به آن نیاز دارند استفاده شود.

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

تبدیل تصویر از تابش نوری به روشنایی BT.709. یعنی تبدیل از یک گونه خطی تابشی به PPM یا PGM واقعی.

تنها در صورتی BT.709 واقعی (و در نتیجه PPM یا PGM واقعی) به دست می‌آورید که از مقدار گامای پیش‌فرض استفاده کنید (یعنی -gamma و موارد مشابه را مشخص نکنید).

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

تبدیل تصویر از روشنایی BT.709 به روشنایی SRGB. یعنی تبدیل از PPM یا PGM واقعی به یک گونه مبتنی بر SRGB که توسط برخی ابزارها و دستگاه‌های نمایش مورد نیاز است.

تنها در صورتی SRGB واقعی به دست می‌آورید که از مقدار گامای پیش‌فرض استفاده کنید (یعنی -gamma و موارد مشابه را مشخص نکنید).

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

تبدیل تصویر از روشنایی SRGB به روشنایی BT.709. یعنی تبدیل به PPM یا PGM واقعی از یک گونه مبتنی بر SRGB.

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

مشابه -lineartobt709، اما با استفاده از ساختار نحوی قدیمی.

نام این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) تغییر یافت. پیش از آن، نام آن -cieramp بود.

یک نام منسوخ‌شده برای -bt709ramp است.

نام این گزینه از این باور پیشین سرچشمه می‌گیرد که این مورد استانداردی از CIE (کمیسیون بین‌المللی روشنایی) بوده است، اما اکنون (اوت ۲۰۰۵) مشخص شده که چنین نبوده است.

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

این یک گزینه از ساختار نحوی قدیمی است. هیچ معادلی در ساختار جدید ندارد زیرا اساساً نباید جزئی از وظایف pnmgamma می‌بود. این گزینه صرفاً برای سازگاری با نسخه‌های پیشین وجود دارد. دلیل عدم لزوم وجود آن این است که روش استاندارد انجام این تبدیل مطابق با فلسفه Netpbm، اجرای یک -lineartobt709 به دنبال یک -bt709tosrgb است؛ دقیقاً مشابه تبدیل از PNG به TIFF که با اجرای pngtopam و سپس pnmtotiff انجام می‌شود. گزینه -srgbramp در واقع متعلق به دوره‌ای قبل از تعریف استاندارد برای مقادیر نمونه‌های تصاویر Netpbm است، زمانی که pnmgamma قالب خطی تابشی را فرمت واسط مناسب می‌دانست.

اعمال معکوس تابع انتقال تعیین‌شده (یعنی تبدیل از روشنایی تنظیم‌شده با گاما به تابش نوری).

این گزینه فقط با -bt709ramp (یا همان -cieramp)، -srgbramp و تابع انتقال نمایی پیش‌فرض معتبر است.

مقدار گاما را برای استفاده در تابع انتقال تعیین می‌کند. تمام توابع انتقال شامل یک توان هستند و مقدار گاما همان مقدار توان است.

استانداردها مقدار گامای مشخصی را تعیین می‌کنند. اگر از هر مقدار دیگری استفاده کنید، از استاندارد انحراف پیدا کرده‌اید.

مقدار پیش‌فرض همان مقدار استاندارد است. برای تابع انتقال نمایی ساده (که یک استاندارد نیست)، مقدار پیش‌فرض ۲.۲ است.

در تبدیل‌های -bt709tosrgb و -srgbtobt709 دو مقدار توان وجود دارد. گزینه -gamma روی تابع مقصد («to») تأثیر می‌گذارد؛ تابع مبدأ («from») همیشه از مقدار استاندارد گاما استفاده می‌کند.

اگر یکی از گزینه‌های اختصاصی مؤلفه‌ها (-rgamma و غیره) را تعیین کنید، مقدار -gamma را بازنویسی می‌کند.

با گزینه‌های -bt709ramp (یا همان -cieramp)، -srgbramp یا تابع انتقال نمایی پیش‌فرض، نمی‌توانید از این گزینه استفاده کنید، اما همان مفهوم را از طریق پارامترها تعیین می‌کنید.

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

این گزینه‌ها دقیقاً مانند -gamma هستند، با این تفاوت که مقدار را برای یکی از مؤلفه‌های رنگی خاص مشخص می‌کنند.

اگر این گزینه را برای یک مؤلفه رنگی خاص تعیین نکنید، مقدار پیش‌فرض همان مقدار -gamma خواهد بود (یا مقدار پیش‌فرض -gamma اگر آن را نیز مشخص نکرده باشید).

با گزینه‌های -bt709ramp (یا همان -cieramp)، -srgbramp یا تابع انتقال نمایی پیش‌فرض، نمی‌توانید مستقیماً از این گزینه استفاده کنید، بلکه همان مقدار را از طریق پارامترها تعیین می‌کنید.

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است.

این گزینه مقدار بیشینه (maxval) تصویر خروجی را مشخص می‌کند. به‌طور پیش‌فرض، مقدار maxval خروجی برابر با مقدار ورودی است.

از آنجا که این تبدیل غیرخطی است، برای اینکه هیچ اطلاعاتی از ورودی از دست نرود به maxval بزرگ‌تری در خروجی نیاز دارید. برای نمونه، اگر با استفاده از -ungamma -bt709ramp و مقدار پیش‌فرض گاما به مقادیر نمونه خطی تابشی تبدیل کنید و مقدار maxval شما هم در ورودی و هم در خروجی ۲۵۵ باشد، ۳ مقدار نمونه ورودی مختلف همگی مقدار نمونه خروجی ۲۵۴ را تولید می‌کنند. برای اینکه برای هر مقدار نمونه ورودی یک مقدار نمونه خروجی مجزا داشته باشید، به maxval خروجی حداقل ۳ برابر maxval ورودی نیاز خواهید داشت.

این گزینه در Netpbm 10.32 (فوریه ۲۰۰۶) اضافه شده است. پیش از آن، می‌توانستید با افزایش maxval ورودی یا کاهش maxval خروجی با استفاده از pamdepth به نتیجه یکسانی برسید.

توضیح خوبی درباره گاما در پرسش‌های متداول گامای چارلز پوینتون (Charles Poynton) در نشانی http://www.poynton.com/GammaFAQ.html(1)و پرسش‌های متداول رنگ در نشانی http://www.poynton.com/ColorFAQ.html(1)آورده شده است.

به‌طور خلاصه: ساده‌ترین روش برای کدگذاری یک تصویر، استفاده از مقادیر نمونه‌ای است که مستقیماً متناسب با تابش نوری مؤلفه‌های رنگی باشند. تابش یک کمیت فیزیکی بر اساس مقدار توان موجود در نور است؛ در آزمایشگاه به‌سادگی قابل اندازه‌گیری است اما در نظر نمی‌گیرد که نور برای چشم انسان چگونه به نظر می‌رسد. این کار فضای نمونه‌برداری را هدر می‌دهد، زیرا چشم انسان نمی‌تواند تفاوت‌های میان رنگ‌های با تابش کم را به همان خوبی رنگ‌های با تابش زیاد تشخیص دهد. بنابراین در عوض، مقادیر تابش را از یک تابع انتقال عبور می‌دهیم تا تغییر مقدار نمونه به اندازه ۱ واحد، تغییر رنگ ادراک‌شده یکسانی را در سراسر محدوده نمونه ایجاد کند. ما آن مقادیر حاصل را در فایل تصویر ذخیره می‌کنیم. این تابع انتقال، تابع انتقال گاما و این تبدیل، تنظیم و اصلاح گاما نامیده می‌شود.

مقدار اصلاح‌شده با گاما که متناسب با روشنایی ذهنی است، به عنوان درخشندگی (Luminance) پیکسل شناخته می‌شود.

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

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

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

و وقتی در نظر بگیرید که دستگاه‌های گرافیکی رایانه معمولاً از شما می‌خواهند در حافظه گرافیکی مقداری متناسب با ولتاژ سیگنالی که قرار است به نمایشگر ارسال شود ذخیره کنید (که نمایشگر آن را به ولتاژ تحریک متناسب روی تفنگ الکترونی تبدیل می‌کند)، کار با مقادیر نمونه تنظیم‌شده با گاما بسیار راحت و کاربردی است.

pnm(1)

حق نشر 1991 متعلق به Bill Davidson و Jef Poskanzer است.

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

http://netpbm.sourceforge.net/doc/pnmgamma.html
۳۰ ژوئن ۲۰۰۷ مستندات netpbm