\ .\" 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 "Pnmremap User Manual" 0 "13 November 2014" "netpbm documentation" .SH "نام (NAME)" pnmremap \- جایگزینی رنگ‌ها در یک تصویر PNM با رنگ‌هایی از یک مجموعه دیگر .UN synopsis .SH "خلاصه دستور (SYNOPSIS)" \fBpnmremap\fP \fB-mapfile=\fP\fIpalettefile\fP [\fB-floyd\fP|\fB-fs\fP|\fB-nfloyd\fP|\fB-nofs\fP] {[\fB-norandom\fP]|\fBrandomseed=\fP\fIn\fP} [\fB-firstisdefault\fP] [\fB-verbose\fP] [\fB-missingcolor=\fP\fIcolorspec\fP] [\fIpnmfile\fP] .PP تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها خلاصه کرد. می‌توانید به‌جای یک خط تیره از دو خط تیره برای مشخص کردن یک گزینه استفاده کنید. همچنین می‌توانید بین نام یک گزینه و مقدار آن از فاصله یا علامت مساوی استفاده کنید. .UN description .SH "توضیحات (DESCRIPTION)" .PP این برنامه بخشی از .BR "Netpbm" (1)\c \& است. .PP دستور \fBpnmremap\fP رنگ‌های یک تصویر ورودی را با رنگ‌های موجود در پالت مشخص‌شده جایگزین می‌کند. رنگ‌هایی از ورودی که در پالت وجود دارند، در خروجی بدون تغییر باقی می‌مانند. اما در صورتی که ورودی حاوی رنگی باشد که در پالت موجود نیست، \fBpnmremap\fP گزینه‌های زیر را در اختیارتان قرار می‌دهد: .IP \(bu انتخاب نزدیک‌ترین رنگ از پالت. .IP \(bu انتخاب اولین رنگ از پالت. .IP \(bu استفاده از رنگی که با گزینه خط فرمان (\fB-missing\fP) مشخص شده است. .IP \(bu دیترینگ (Dither). این بدان معناست که \fBpnmremap\fP به‌جای نگاشت پیکسل به پیکسل، از رنگ‌های پالت استفاده می‌کند تا نواحی چندپیکسلی در خروجی دارای همان رنگ میانگین ورودی باشند (برای نوع دیگری از دیترینگ، به \fBppmdither\fP مراجعه کنید). .PP دو دلیل اصلی برای استفاده از این برنامه وجود دارد: ۱) می‌خواهید تعداد رنگ‌ها را در تصویر ورودی کاهش دهید؛ و ۲) باید تصویر را به برنامه‌ای تحویل دهید که فقط توانایی مدیریت رنگ‌های خاصی را دارد. .PP برای کاهش رنگ‌ها، می‌توانید پالت را با استفاده از \fBpnmcolormap\fP تولید کنید. .PP به‌طور پیش‌فرض، \fBpnmremap\fP رنگی از ورودی را که در پالت نیست، به نزدیک‌ترین رنگ \fIموجود\fP در پالت نگاشت می‌کند. «نزدیک‌ترین» به معنای کمترین فاصله دکارتی در فضای روشنایی قرمز، سبز و آبی است (کمترین مجموع مربعات تفاوت‌ها در شدت‌های تنظیم‌شده بر اساس گامای ITU-R Recommendation BT.709 برای قرمز، سبز و آبی). .PP در عوض می‌توانید یک رنگ پیش‌فرض تکی را مشخص کنید تا \fBpnmremap\fP برای هر رنگی در تصویر ورودی که در پالت وجود ندارد از آن استفاده کند. برای این کار از گزینه \fB-missing\fP استفاده کنید. .PP همچنین می‌توانید تعیین کنید که اولین رنگ در تصویر پالت، رنگ پیش‌فرض باشد. برای این منظور از گزینه \fB-firstisdefault\fP استفاده نمایید. .PP پالت صرفاً یک تصویر PNM است. رنگ‌های پیکسل‌های موجود در تصویر، همان رنگ‌های پالت هستند. موقعیت مکانی پیکسل‌ها در تصویر و ابعاد تصویر پالت اهمیتی ندارد. وجود چندین پیکسل با رنگ یکسان هیچ اشکالی ندارد. با این حال، یک تصویر پالت معمولاً یک سطر منفرد با یک پیکسل به ازای هر رنگ است. .PP اگر گزینه \fB-missing\fP را تعیین کنید، رنگ مشخص‌شده علاوه بر رنگ‌های موجود در تصویر پالت، به عنوان عضوی از پالت در نظر گرفته می‌شود. .PP به دلایل تاریخی، گاهی در Netpbm پالت را یک «نقشه رنگ» (colormap) می‌نامند؛ اما در واقعیت چیزی را نگاشت نمی‌کند. دستور \fBpnmremap\fP بر اساس پالت، نقشه اختصاصی خود را می‌سازد تا رنگ‌ها را از تصویر ورودی به رنگ‌های خروجی نگاشت نماید. .UN mismatch .SS عدم تطابق نوع پالت و تصویر (Palette/Image Type Mismatch) .PP در حالت ساده، تصویر پالت دارای همان عمق (تعداد صفحه‌ها یا مؤلفه‌ها در هر تاپل/پیکسل) تصویر ورودی است و \fBpnmremap\fP صرفاً یک جستجوی سرراست در پالت برای هر تاپل (پیکسل) ورودی انجام می‌دهد. در حقیقت، برای \fBpnmremap\fP حتی تفاوتی ندارد که تصویر یک تصویر بصری باشد یا خیر. .PP اما اگر عمق‌ها متفاوت باشند چه اتفاقی می‌افتد؟ در این حالت، \fBpnmremap\fP تصویر ورودی را (در حافظه خود) به نوع مطابق با پالت تبدیل کرده و سپس مطابق قبل عمل می‌کند. .PP تنها دو حالت از این تبدیل‌ها وجود دارد که \fBpnmremap\fP نحوه انجام آن‌ها را می‌داند: حالتی که یکی از آن‌ها دارای نوع تاپل RGB و عمق ۳ باشد و دیگری دارای نوع تاپل GRAYSCALE یا BLACKANDWHITE با عمق ۱ باشد، و برعکس. .PP در هر حالت دیگری، \fBpnmremap\fP پیام خطایی صادر کرده و با شکست مواجه می‌شود. .PP توجه داشته باشید تا زمانی که تصاویر ورودی و پالت شما از نوع PNM باشند، همیشه در یکی از حالت‌هایی که \fBpnmremap\fP می‌تواند مدیریت کند قرار خواهند گرفت. این مشکل فقط زمانی رخ می‌دهد که از یک تصویر خاص و نامتعارف PAM استفاده کنید. .PP پیش از Netpbm 10.27 (مارس ۲۰۰۵)، برنامه \fBpnmremap\fP توانایی مدیریت حالتی که عمق پالت بیشتر از عمق تصویر ورودی بود را نداشت (در این حالت با پیام خطا مواجه می‌شد). برای حل این محدودیت می‌توانید با استفاده از \fBppmtoppm\fP عمق تصویر ورودی را افزایش دهید. .PP در هر صورت، تصویر خروجی دارای همان نوع تاپل و عمق تصویر پالت خواهد بود. .UN multiple .SS جریان‌های چند تصویری (Multiple Image Stream) .PP دستور \fBpnmremap\fP جریان ورودی شامل چند تصویر را پشتیبانی کرده و یک جریان خروجی با چند تصویر تولید می‌کند. تصاویر ورودی نیازی نیست به هیچ عنوان شبیه به یکدیگر باشند. .PP پیش از Netpbm 10.30 (اکتبر ۲۰۰۵)، برنامه \fBpnmremap\fP تمام تصاویر پس از تصویر اول را نادیده می‌گرفت. .UN example .SS مثال‌ها (Examples) .nf pnmcolormap testimg.ppm 256 >palette.ppm pnmremap -map=palette.ppm testimg.ppm >reduced_testimg.ppm .fi .PP برای محدود کردن رنگ‌ها به یک مجموعه خاص، یک نمونه رایج ساخت تصویری جهت انتشار در وب جهانی است؛ جایی که مرورگرهای مختلف رنگ‌های مختلفی را می‌شناسند. اما تمام مرورگرها باید ۲۱۶ رنگ به اصطلاح «امن وب» (web safe) را بشناسند که اساساً تمام رنگ‌هایی هستند که می‌توانید در یک تصویر PPM با maxval برابر ۵ نمایش دهید. بنابراین می‌توانید چنین کنید: .nf pamseq 3 5 >websafe.pam pnmremap -map=websafe.pam testimg.ppm >websafe_testimg.ppm .fi .PP یک پالت مفید دیگر، مجموعه ۸ رنگ IBM TTL است که می‌توانید آن را با دستور زیر ایجاد کنید: .nf pamseq 3 1 >ibmttl.pam .fi .PP اگر می‌خواهید یک تصویر را کوانتیزه کنید تا از رنگ‌های تصویر دیگری استفاده کند، فقط کافی است از تصویر دوم به عنوان پالت استفاده کنید. نیازی نیست آن را به یک پیکسل از هر رنگ تقلیل دهید، فقط از آن به همان شکل استفاده کنید. .PP تصویر خروجی دارای همان نوع و همان maxval تصویر پالت خواهد بود. .UN parameters .SH "پارامترها (PARAMETERS)" .PP یک پارامتر وجود دارد که الزامی است: مشخصات فایل PNM ورودی. .UN options .SH "گزینه‌ها (OPTIONS)" .PP علاوه بر گزینه‌های مشترک میان تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه \fB-quiet\fP، به .UR index.html#commonoptions گزینه‌های مشترک .UE مراجعه کنید)، \fBpnmremap\fP گزینه‌های خط فرمان زیر را به رسمیت می‌شناسد: .TP \fB-mapfile=\fP\fIpalettefilename\fP نام فایلی که حاوی تصویر پالت است را مشخص می‌کند. .sp این گزینه الزامی است. .TP \fB-floyd\fP .TP \fB-fs\fP .TP \fB-nofloyd\fP .TP \fB-nofs\fP این گزینه‌ها تعیین می‌کنند که آیا \fBpnmremap\fP دیترینگ فلوید-اشتاینبرگ (Floyd-Steinberg) را انجام دهد یا خیر. بدون فلوید-اشتاینبرگ، \fBpnmremap\fP رنگ خروجی هر پیکسل را فقط بر اساس رنگ پیکسل متناظر در ورودی انتخاب می‌کند. با فلوید-اشتاینبرگ، \fBpnmremap\fP نواحی پیکسلی را به‌گونه‌ای لحاظ می‌کند که میانگین رنگ یک ناحیه در خروجی با ورودی یکسان باشد. اثر دیترینگ از نمای نزدیک به صورت الگویی از نقاط به نظر می‌رسد، اما از دور نقاط با یکدیگر ترکیب می‌شوند به‌طوری که رنگ‌های بیشتری نسبت به رنگ‌های موجود در نقشه رنگ به چشم می‌آیند. .sp به عنوان مثال، اگر نقشه رنگ شما فقط شامل سیاه و سفید باشد و تصویر ورودی دارای ۴ پیکسل مجاور خاکستری باشد، \fBpnmremap\fP همراه با فلوید-اشتاینبرگ پیکسل‌های خروجی سیاه، سفید، سیاه و سفید تولید می‌کند که از فاصله دور خاکستری دیده می‌شود. اما بدون فلوید-اشتاینبرگ، \fBpnmremap\fP چهار پیکسل سفید تولید می‌کند؛ زیرا سفید تقریب تک‌پیکسلی برای رنگ خاکستری است. .sp فلوید-اشتاینبرگ نتایج بسیار بهتری را روی تصاویری ارائه می‌دهد که کوانتیزاسیون خام در آن‌ها باعث ایجاد نوارهای رنگی (banding) یا سایر اعوجاج‌ها می‌شود، به‌ویژه در زمان کاهش رنگ به تعداد کم مانند مجموعه رنگ‌های IBM در بالا. با این حال، زمان پردازش پردازنده (CPU) به‌طور قابل توجهی افزایش می‌یابد. .sp گزینه \fB-fs\fP مترادفی برای \fB-floyd\fP است. گزینه \fB-nofs\fP مترادفی برای \fB-nofloyd\fP است. .sp حالت پیش‌فرض \fB-nofloyd\fP است. .sp پیش از Netpbm 10.46 (مارس ۲۰۰۹)، در صورتی که نقشه رنگ مقدار maxval کمتری نسبت به ورودی داشت، دیترینگ دقیقاً آن‌گونه که انتظار می‌رفت کار نمی‌کرد. برنامه \fBpnmremap\fP پیش از انجام دیترینگ، تفکیک‌پذیری رنگ را به مقدار maxval نقشه رنگ کاهش می‌داد؛ بنابراین دیترینگ این اثر را نداشت که تصویر از فاصله دور با maxval اصلی دیده شود. در نسخه‌های فعلی Netpbm، این مشکل برطرف شده است. .TP \fB-norandom\fP این گزینه بر جزئیاتی از فرایند دیترینگ فلوید-اشتاینبرگ تأثیر می‌گذارد. اگر دیترینگ فلوید-اشتاینبرگ انجام ندهید، هیچ تأثیری ندارد. .sp به‌طور پیش‌فرض، \fBpnmremap\fP انباشتگر انتشار خطا را با مقادیر تصادفی مقداردهی اولیه می‌کند تا از ظاهر شدن الگوهای ناخواسته جلوگیری شود. این یک توسعه بر روی الگوریتم اصلی فلوید-اشتاینبرگ است. .sp یک عیب این رویکرد آن است که اجرای یکسان \fBpnmremap\fP روی یک ورودی یکسان، هر بار خروجی کمی متفاوتی ایجاد می‌کند که مقایسه خروجی‌ها را دشوار می‌سازد. .sp با گزینه \fB-norandom\fP، برنامه \fBpnmremap\fP انباشتگرهای خطا را با صفر مقداردهی اولیه می‌کند و خروجی کاملاً قابل پیش‌بینی خواهد بود. .sp همچنین می‌توانید از \fB-randomseed\fP استفاده کنید تا تصادفی‌سازی روی تصویر اعمال شود، اما نتایج همچنان تکرارپذیر باشند. .sp نمی‌توانید این گزینه را هم‌زمان با \fB-randomseed\fP مشخص کنید. .sp گزینه \fB-norandom\fP در Netpbm 10.39 (ژوئن ۲۰۰۷) معرفی شد. .TP \fB-randomseed=\fP\fIn\fP این گزینه بر جزئیاتی از فرایند دیترینگ فلوید-اشتاینبرگ تأثیر می‌گذارد. اگر دیترینگ فلوید-اشتاینبرگ را انجام ندهید، هیچ تأثیری ندارد. .sp این گزینه بذر (seed) تولیدکننده اعداد تصادفی را تأمین می‌کند که در فرایند تصادفی‌سازی تشریح‌شده در توضیح گزینه \fB-norandom\fP استفاده می‌شود. اگر \fBpnmremap\fP را دو بار با مقدار یکسان \fB-randomseed\fP اجرا کنید، نتایج کاملاً یکسانی دریافت خواهید کرد. .sp اگر \fB-randomseed\fP را مشخص نکنید، \fBpnmremap\fP بذری را به‌صورت تصادفی انتخاب می‌کند که سطح دیگری از تصادفی بودن را به دیترینگ اضافه می‌نماید. .sp نمی‌توانید این گزینه را همراه با \fB-norandom\fP مشخص کنید. .sp این گزینه در Netpbm 10.82 (مارس ۲۰۱۸) اضافه شد. .TP \fB-firstisdefault\fP این گزینه به \fBpnmremap\fP می‌گوید که هر رنگ ورودی را که در پالت وجود ندارد به اولین رنگ موجود در پالت نگاشت کند (رنگ پیکسل در گوشه بالا-چپ تصویر پالت). .sp به .UR #description توضیحات (DESCRIPTION) .UE مراجعه کنید. .sp اگر \fB-firstisdefault\fP را مشخص کنید، مقدار maxval ورودی شما باید با مقدار maxval تصویر پالت مطابقت داشته باشد. .TP \fB-missingcolor=\fP\fIcolorspec\fP این گزینه رنگ پیش‌فرضی را مشخص می‌کند که \fBpnmremap\fP به رنگ‌هایی در تصویر ورودی اختصاص می‌دهد که در پالت وجود ندارند. \fIcolor\fP ممکن است در تصویر پالت باشد یا نباشد؛ در هر حال به عنوان بخشی از پالت در نظر گرفته می‌شود. .sp نحوه بیان \fIcolorspec\fP همان‌گونه است که برای آرگومان تابع کتابخانه‌ای .UR libnetpbm_image.html#colorname \fBpnm_parsecolor()\fP .UE تشریح شده است. .sp اگر \fB-missingcolor\fP را مشخص کنید، مقدار maxval ورودی باید با مقدار maxval تصویر پالت مطابقت داشته باشد. .TP \fB-verbose\fP نمایش پیام‌های راهنما درباره فرایند نگاشت. .UN seealso .SH "همچنین ببینید (SEE ALSO)" .BR "pnmcolormap" (1)\c \&, .BR "pamlookup" (1)\c \&, .BR "pnmquant" (1)\c \&, .BR "ppmquantall" (1)\c \&, .BR "pamdepth" (1)\c \&, .BR "ppmdither" (1)\c \&, .BR "ppmquant" (1)\c \&, .BR "pamseq" (1)\c \&, .BR "ppm" (1)\c \& .UN history .SH "تاریخچه (HISTORY)" .PP دستور \fBpnmremap\fP اولین بار در Netpbm 9.23 (ژانویه ۲۰۰۲) ظاهر شد. پیش از آن، عملکرد آن تنها به عنوان بخشی از عملکرد \fBpnmquant\fP (که برگرفته از ابزار بسیار قدیمی‌تر \fBppmquant\fP بود) در دسترس بود. کوانتیزاسیون رنگ در اصل دارای دو زیرکارکرد اصلی است؛ بنابراین Netpbm 9.23 آن را به دو برنامه جداگانه تقسیم کرد: \fBpnmcolormap\fP و \fBpnmremap\fP. سپس در Netpbm 9.24، برنامه \fBpnmquant\fP با برنامه‌ای جایگزین شد که صرفاً \fBpnmcolormap\fP و \fBpnmremap\fP را فراخوانی می‌کند. .UN author .SH "نویسنده (AUTHOR)" حق نشر \(C) ۱۹۸۹، ۱۹۹۱ توسط Jef Poskanzer. .SH "منبع سند (DOCUMENT SOURCE)" این صفحه راهنما توسط ابزار 'makeman' در Netpbm از منبع HTML تولید شده است. مستندات اصلی در نشانی زیر قرار دارد: .IP .B http://netpbm.sourceforge.net/doc/pnmremap.html .PP