Pamditherbw User Manual(0) Pamditherbw User Manual(0)

pamditherbw - تبدیل و دیترینگ تصویر خاکستری به سیاه و سفید

pamditherbw

[-floyd | -fs | -atkinson | -threshold | -hilbert | -dither8 | -d8 | -cluster3 | -c3 | -cluster4 | -c4 | -cluster8 | -c8]

[-value val]

[-clump size]

[-randomseed=integer]

[pamfile]

تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها مخفف کرد.

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

برنامه pamditherbw یک تصویر با مقیاس خاکستری (grayscale) را دیتر (dither) می‌کند. دیترینگ یعنی تبدیل هر سایه خاکستری به الگویی از پیکسل‌های سیاه و سفید که از دور شبیه به همان رنگ خاکستری به نظر می‌رسند.

ورودی باید یک تصویر PGM یا یک تصویر PAM با نوع تاپل GRAYSCALE باشد. با این حال، pamditherbw این موضوع را بررسی نمی‌کند، بنابراین اگر مثلاً یک تصویر PPM به آن بدهید، نتایج نامشخصی تولید می‌کند (در واقع فقط اولین کانال هر ورودی را دریافت کرده و به عنوان سطوح خاکستری با آن رفتار می‌کند).

خروجی یک تصویر PAM با نوع تاپل BLACKANDWHITE است. با استفاده از pamtopnm می‌توانید آن را به یک PBM تبدیل کنید (اگر نیاز دارید از آن در برنامه‌ای قدیمی‌تر استفاده کنید که PAM را متوجه نمی‌شود).

برای انجام برعکس دیترینگ، معمولاً می‌توانید تصویر را با pamscale کوچک کرده و سپس دوباره بزرگ کنید و احتمالاً نتیجه را با pnmsmooth یا pnmconvol هموار یا تار نمایید. یا از برنامه ویژه pbmtopgm استفاده کنید.

برای دیتر کردن یک تصویر رنگی (به منظور کاهش تعداد رنگ‌های پیکسل)، از ppmdither استفاده کنید.

روش دیگر برای تبدیل تصویر در مقیاس خاکستری به یک تصویر سیاه و سفید، آستانه‌گذاری (thresholding) است. آستانه‌گذاری به سادگی به معنای جایگزینی هر پیکسل خاکستری با یک پیکسل سیاه یا سفید است، بسته به اینکه روشنایی آن بالاتر یا پایین‌تر از یک حد آستانه باشد. این مقدار آستانه ممکن است متغیر باشد. آستانه‌گذاری ساده در واقع حالت تقلیل‌یافته‌ای از دیترینگ است، بنابراین pamditherbw با گزینه -threshold خود آستانه‌گذاری بسیار ساده‌ای را انجام می‌دهد. اما برنامه pamthreshold آستانه‌گذاری پیچیده‌تر و پیشرفته‌تری را پیاده‌سازی می‌کند.

اگر تنها چیزی که می‌خواهید تبدیل یک تصویر PGM با maxval برابر با 1 به یک تصویر PBM است، pamtopnm این کار را انجام می‌دهد.

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

روش کوانتیزاسیون پیش‌فرض، انتشار خطای فلوید-اشتاینبرگ دوطرفه (boustrophedonic Floyd-Steinberg error diffusion) است (-floyd یا -fs).

روش‌های دیگر نیز در دسترس هستند: آستانه‌گذاری ساده (-threshold)؛ دیتر مرتب‌شده بایر (-dither8) با ماتریس ۱۶×۱۶؛ روش
اتکینسون (Atkinson)
؛ و سه اندازه مختلف از دیتر نقطه‌ای خوشه‌ای ۴۵ درجه (-cluster3، -cluster4، -cluster8).

یک روش نیم‌سایه‌زنی (halftoning) با منحنی فضاپرکن با استفاده از منحنی هیلبرت نیز در دسترس است (-hilbert).

روش‌های فلوید-اشتاینبرگ یا اتکینسون تقریباً همیشه خوش‌نماترین نتایج را ارائه می‌دهند؛ هرچند ظاهر زیبا همیشه آن چیزی نیست که می‌خواهید. به عنوان مثال، می‌توانید از آستانه‌گذاری در یک خط لوله پردازشی همراه با pnmconvol برای کارهایی نظیر لبه‌یابی یا تشخیص قله‌ها استفاده کنید. همچنین دیترینگ نقطه‌ای خوشه‌ای نمایی شبیه به چاپ روزنامه به تصویر می‌دهد که یک جلوه ویژه کاربردی است.

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

روش منحنی هیلبرت برای پردازش تصاویر قبل از نمایش در دستگاه‌هایی که پیکسل‌های منفرد را به طور متمایز رندر نمی‌کنند (مانند چاپگرهای لیزری) مفید است. این روش دیترینگ می‌تواند نتایج بهتری نسبت به دیترینگی که معمولاً توسط خود چاپگرهای لیزری انجام می‌شود ارائه دهد. گزینه -clump تعداد پیکسل‌ها در یک دسته (clump) را تغییر می‌دهد. معمولاً یک تصویر PGM باید مقیاس‌بندی شود تا در صفحه چاپگر لیزری جا شود (۲۴۰۰ در ۳۰۰۰ پیکسل برای یک صفحه A4 با تفکیک‌پذیری 300 dpi)، و سپس به یک تصویر PBM دیتر شود قبل از آنکه به فایل پست‌اسکریپت تبدیل گردد. یک خط لوله چاپ ممکن است شبیه به این باشد:

pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert |  \
  pamtopnm | pnmtops -scale 0.25 > image.ps 

این گزینه مقدار آستانه را برای فلوید-اشتاینبرگ، اتکینسون و آستانه‌گذاری ساده تغییر می‌دهد. این مقدار باید یک عدد حقیقی بین 0 و 1 باشد. مقدار بالاتر از 0.5 به معنای تصاویر تیره‌تر است؛ مقدار کمتر از 0.5 به معنای تصاویر روشن‌تر است.
این گزینه تعداد پیکسل‌ها در یک دسته (clump) را هنگام استفاده از روش منحنی هیلبرت تغییر می‌دهد. این مقدار معمولاً عددی صحیح بین ۲ و ۱۰۰ است (پیش‌فرض ۵ است). اندازه‌های کوچک‌تر دسته تصویر را کمتر لکه‌دار می‌کنند و دانه‌دانه بودن کمتری دارند، اما به نظر می‌رسد مقداری از خطی بودن مقیاس خاکستری را از بین می‌برند.
روش‌های فلوید-اشتاینبرگ و اتکینسون از اعداد تصادفی برای انتشار خطا استفاده می‌کنند. این گزینه بذر (seed) تولیدکننده اعداد تصادفی است. سایر روش‌ها از اعداد تصادفی استفاده نمی‌کنند و این گزینه را نادیده می‌گیرند.

از این گزینه برای اطمینان از دریافت تصویری کاملاً یکسان در اجراهای جداگانه استفاده کنید.

به طور پیش‌فرض، pamditherbw از بذری مشتق‌شده از زمان روز و شناسه فرآیند (process ID) استفاده می‌کند که در چندین بار اجرا، نتایجی بدون همبستگی به شما می‌دهد.

این گزینه در Netpbm نسخه 10.45 (دسامبر ۲۰۰۸) جدید بود.

تنها مرجعی که برای این مباحث نیاز دارید کتاب "Digital Halftoning" اثر Robert Ulichney، انتشارات MIT Press با شابک 0-262-21009-6 است.

روش فضاپرکن منحنی هیلبرت برگرفته از مقاله "Digital Halftoning with Space Filling Curves" اثر Luiz Velho در مجله Computer Graphics، دوره ۲۵، شماره ۴، مجموعه مقالات SIGGRAPH '91، صفحه ۸۱ با شابک 0-89791-436-8 است.

pamtopnm(1), pgmtopgm(1), pbmtopgm(1), pamthreshold(1), pbmreduce(1), pnmconvol(1), pamscale(1), pam(1), pnm(1),

برنامه pamditherbw در Netpbm نسخه 10.23 (ژوئیه ۲۰۰۴) جدید بود، اما در اصل همان برنامه pgmtopbm است که عملاً از ابتدا وجود داشته است. تفاوت pamditherbw با سلف خود در این است که روشنایی‌ها را به درستی جمع می‌زند (با استفاده از تبدیلات گاما؛ pgmtopbm فقط آن‌ها را به طور خطی جمع می‌کرد) و علاوه بر PGM و PBM، ورودی PAM را نیز می‌پذیرد و خروجی PAM تولید می‌کند.

برنامه pamditherbw جایگزین و منسوخ‌کننده pgmtopbm است.

گزینه -atkinson در Netpbm نسخه 10.38 (مارس ۲۰۰۷) اضافه شد.

حق نشر (C) ۱۹۸۹ توسط Jef Poskanzer.

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

http://netpbm.sourceforge.net/doc/pamditherbw.html
10 May 2010 netpbm documentation