\ .\" 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 "Pamfunc User Manual" 0 "09 September 2020" "netpbm documentation" .SH "نام (NAME)" pamfunc \- اعمال یک تابع حسابی یکانی ساده روی یک تصویر Netpbm .UN synopsis .SH "خلاصه دستور (SYNOPSIS)" \fBpamfunc\fP { \fB-multiplier=\fP\fIrealnum\fP | \fB-divisor=\fP\fIrealnum\fP | \fB-adder=\fP\fIinteger\fP | \fB-subtractor=\fP\fIinteger\fP | \fB-min=\fP\fIwholenum\fP | \fB-max=\fP\fIwholenum\fP \fB-andmask=\fP\fIhexmask\fP \fB-ormask=\fP\fIhexmask\fP \fB-xormask=\fP\fIhexmask\fP \fB-not\fP \fB-shiftleft=\fP\fIcount\fP \fB-shiftright=\fP\fIcount\fP [\fB-changemaxval\fP] } [\fIfilespec\fP] .PP تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها خلاصه کرد. می‌توانید به جای یک خط تیره از دو خط تیره استفاده کنید. همچنین می‌توانید نام یک گزینه و مقدار آن را به جای علامت مساوی با یک نویسه فاصله (white space) جدا نمایید. .UN description .SH "توضیحات (DESCRIPTION)" .PP این برنامه بخشی از .BR "Netpbm" (1)\c \& است. .PP برنامه \fBpamfunc\fP یک تصویر Netpbm را به عنوان ورودی می‌خواند و یک تصویر Netpbm با همان قالب و ابعاد ورودی به عنوان خروجی تولید می‌کند. \fBpamfunc\fP یک تابع انتقال ساده را روی هر نمونه در ورودی اعمال می‌کند تا نمونهٔ متناظر آن را در خروجی ایجاد نماید. گزینه‌ها تعیین‌کنندهٔ این تابع هستند. .PP نمونه‌های دخیل در این پردازش نمونه‌های PAM هستند. اگر ورودی PBM، PGM یا PPM باشد، خروجی نیز در همان قالب خواهد بود، اما \fBpamfunc\fP توابع را روی نمونه‌های معادل PAM اعمال کرده و نمونه‌های معادل PAM تولید می‌کند. این موضوع می‌تواند در حالت .UR #pbmoddness PBM .UE \& دور از ذهن و غیربدیهی به نظر برسد. .PP برنامهٔ \fBpamarith\fP همین کار را برای توابع دوگانی (باینری) انجام می‌دهد \-\- دو تصویر را به عنوان ورودی می‌گیرد و یک تابع حسابی ساده و مشخص (مانند جمع) را روی جفت‌های نمونه از دو تصویر اعمال می‌کند تا یک تصویر خروجی واحد تولید نماید. .UN values .SS "مقادیر (Values)" .PP توابع به دو دسته تقسیم می‌شوند: حسابی (مانند ضرب در ۵) و رشتهٔ بیتی (مانند AND با 01001000). برای توابع حسابی، آرگومان‌ها و نتایج تابع، کسری هستند که یک نمونه از maxval تشکیل می‌دهد، یعنی همان تفسیر معمول چندتایی‌های PAM. اما برای توابع رشتهٔ بیتی، مقدار همان رشتهٔ بیتی است که مقدار آن در قالب یک رمز دودویی برابر با مقدار نمونه است، و maxval پهنای رشتهٔ بیتی (تعداد بیت‌ها) را مشخص می‌کند. .B توابع حسابی (Arithmetic functions) .PP توابع حسابی مواردی هستند که توسط گزینه‌های \fB-multiplier\fP، \fB-divisor\fP، \fB-adder\fP، \fB-subtractor\fP، \fB-min\fP و \fB-max\fP انتخاب می‌شوند. .PP به عنوان مثال، تصویری را با maxval برابر با ۱۰۰، مقدار نمونهٔ ۱۰ و تابعی تحت عنوان «ضرب در ۵» در نظر بگیرید. آرگومان ورودی تابع 10/100 (یعنی 0.1) و نتیجهٔ آن 5 * 0.1 = 0.5 است. در ساده‌ترین حالت، maxval خروجی نیز ۱۰۰ است، بنابراین مقدار نمونه خروجی 0.5 * 100 = 50 خواهد بود. همان‌طور که می‌بینید، می‌توانستیم به جای این کسرها صرفاً دربارهٔ خود مقادیر نمونه صحبت کنیم و به همان نتیجه برسیم (10 * 5 = 50)، اما این کار را نمی‌کنیم. .PP جایی که تفاوت عملی ایجاد می‌شود که آیا مقادیر را کسر از maxval در نظر بگیریم یا صرفاً خود مقدار نمونه، جایی است که \fBpamfunc\fP مقدار maxval متفاوتی در تصویر خروجی نسبت به آنچه در تصویر ورودی می‌یابد به کار می‌برد. گزینهٔ \fB-changemaxval\fP را ببینید. .PP بنابراین هنگام خواندن توضیحات زیر به یاد داشته باشید که در این مثال، مقادیر 0.1 و 0.5 هستند، نه ۱۰ و ۵۰. تمام آرگومان‌ها و نتایج در بازهٔ [0,1] قرار دارند. .B توابع رشتهٔ بیتی (Bit string functions) .PP توابع رشتهٔ بیتی مواردی هستند که با گزینه‌های \fB-andmask\fP، \fB-ormask\fP، \fB-xormask\fP، \fB-not\fP، \fB-shiftleft\fP و \fB-shiftright\fP انتخاب می‌شوند. .PP در این توابع، maxval معنایی کاملاً متفاوت با تصاویر معمولی Netpbm دارد: این مقدار مشخص می‌کند رشتهٔ بیتی چقدر پهن است (شامل چند بیت است). مقدار maxval باید یک شمارش دودویی کامل (توانی از دو منهای یک، مانند 0xff) باشد و تعداد بیت‌های یک در آن، پهنای رشتهٔ بیتی را نشان می‌دهد. .PP به عنوان مثال، تصویری با maxval برابر با ۱۵، مقدار نمونهٔ ۵ و تابعی با عنوان «AND با 0100» را در نظر بگیرید. آرگومان تابع 0101 و نتیجه 0100 است. .PP در این مثال، تا زمانی که پهنای رشته حداقل ۳ باشد، تفاوتی در عمل ایجاد نمی‌کند که پهنای رشته را چه در نظر بگیریم. اگر maxval برابر با ۲۵۵ بود، نتیجه یکسان می‌بود. اما در یک عملیات شیفت بیتی، این موضوع اهمیت دارد. شیفت دادن به چپ به اندازهٔ ۲ بیت را در نظر بگیرید. در این مثال، جایی که مقدار ورودی 0101 است، نتیجه 0100 خواهد بود. اما اگر maxval برابر ۲۵۵ بود، نتیجه 00010100 می‌شد. .PP برای یک تابع ماسک‌گذاری (masking)، مقدار ماسکی که تعیین می‌کنید نباید بیت‌های پرارزش‌تری نسبت به پهنای مشخص‌شده توسط maxval داشته باشد. .PP برای یک عملیات شیفت، تعداد شیفتی که تعیین می‌کنید نباید از پهنای مشخص‌شده توسط maxval بزرگ‌تر باشد. .UN pbmoddness .B رفتار نامتعارف PBM (PBM Oddness) .PP اگر با قالب PBM آشنایی داشته باشید، ممکن است عملکرد \fBpamfunc\fP روی تصاویر PBM از نظرتان غیربدیهی و خلاف انتظار به نظر برسد. از آنجا که در PBM رنگ سیاه با ۱ و رنگ سفید با ۰ نشان داده می‌شود (نرمال‌شده به ۱.۰ و ۰.۰)، ممکن است انتظار داشته باشید افزودن ۱ به سفید منجر به سیاه شود. .PP اما قالب PBM در اینجا نامربوط است، زیرا \fBpamfunc\fP روی اعدادی کار می‌کند که در معادل PAM یافت می‌شوند (بالا را ببینید). در یک تصویر سیاه و سفید PAM، سیاه ۰ و سفید ۱ است (نرمال‌شده به ۰.۰ و ۱.۰). بنابراین سفید به علاوهٔ ۱ (که به مقدار بیشینهٔ ۱.۰ برش می‌خورد/کلیپ می‌شود) همچنان سفید باقی می‌ماند. .UN options .SH "گزینه‌ها (OPTIONS)" .PP علاوه بر گزینه‌های مشترک بین تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه \fB-quiet\fP، به .UR index.html#commonoptions گزینه‌های عمومی (Common Options) .UE \& مراجعه کنید)، \fBpamfunc\fP گزینه‌های خط فرمان زیر را می‌شناسد: .TP \fB-multiplier=\fIrealnum\fP\fP .sp این گزینه تابع انتقال را به ضرب در \fIrealnum\fP تبدیل می‌کند. \fIrealnum\fP باید نامنفی باشد. اگر نتیجه بزرگ‌تر از یک شود، به یک برش می‌خورد (clip می‌شود). .sp در صورتی که ورودی تصویری از نوع PGM یا PPM باشد، این کار اثر تیره کردن یا روشن کردن آن را دارد. برای نوع متفاوتی از روشن‌سازی، به .BR "\fBpambrighten\fP" (1)\c \& و .BR "\fBppmflash\fP" (1)\c \& مراجعه کنید. .sp همچنین، به .BR "\fBppmdim\fP" (1)\c \& مراجعه کنید، که همان کار \fBpamfunc -multiplier\fP را روی یک تصویر PPM با ضریبی بین صفر و یک انجام می‌دهد، با این تفاوت که از محاسبات عدد صحیح استفاده می‌کند، بنابراین ممکن است سریع‌تر باشد. .sp و .BR "\fBppmfade\fP" (1)\c \& می‌تواند یک توالی کامل از تصاویر تولید کند که روشنایی آن‌ها رو به سیاه کاهش یافته یا رو به سفید افزایش می‌یابد، چنانچه به آن نیاز داشته باشید. .TP \fB-divisor=\fIrealnum\fP\fP .sp این گزینه تابع انتقال را به تقسیم بر \fIrealnum\fP تبدیل می‌کند. \fIrealnum\fP باید نامنفی باشد. اگر نتیجه بزرگ‌تر از یک شود، به یک برش می‌خورد (clip می‌شود). .sp این همان تابعی است که با \fB-multiplier\fP با تعیین معکوس ضربی \fIrealnum\fP به دست می‌آورید. .TP \fB-adder=\fIinteger\fP\fP .sp این گزینه تابع انتقال را به جمع با \fIinteger\fP/\fImaxval\fP تبدیل می‌کند. اگر نتیجه بزرگ‌تر از یک شود، به یک برش می‌خورد. اگر کمتر از صفر شود، به صفر برش می‌خورد. .sp توجه داشته باشید که در ریاضیات، این موجودیت "addend" (مَفروقٌ‌مِنه یا افزوده) نامیده می‌شود و در انگلیسی "adder" یک مار است. ما از "adder" استفاده می‌کنیم زیرا مفهوم‌تر است. .TP \fB-subtractor=\fIinteger\fP\fP .sp این گزینه تابع انتقال را به تفریق \fIinteger\fP/\fImaxval\fP تبدیل می‌کند. اگر نتیجه بزرگ‌تر از یک شود، به یک برش می‌خورد. اگر کمتر از صفر شود، به صفر برش می‌خورد. .sp توجه داشته باشید که در ریاضیات، این موجودیت را "subtrahend" (مَفروق یا کاسته) می‌نامند نه "subtractor". ما از "subtractor" استفاده می‌کنیم زیرا مفهوم‌تر است. .sp این همان تابعی است که با \fB-adder\fP با تعیین منفیِ \fIinteger\fP به دست می‌آورید. .TP \fB-min=\fIwholenum\fP\fP .sp این گزینه تابع انتقال را به محاسبهٔ بیشینهٔ (ماکزیممِ) آرگومان و \fIwholenum\fP/\fImaxval\fP تبدیل می‌کند؛ یعنی کمترین مقدار در خروجی \fIwholenum\fP/\fImaxval\fP خواهد بود. اگر \fIwholenum\fP/\fImaxval\fP بزرگ‌تر از یک باشد، تمام مقادیر در خروجی یک خواهند بود. .TP \fB-max=\fIwholenum\fP\fP .sp این گزینه تابع انتقال را به محاسبهٔ کمینهٔ (مینیممِ) آرگومان و \fIwholenum\fP/\fImaxval\fP تبدیل می‌کند؛ یعنی بیشترین مقدار در خروجی \fIwholenum\fP/\fImaxval\fP خواهد بود. اگر \fIwholenum\fP/\fImaxval\fP بزرگ‌تر از یک باشد، تابع همانی (idempotent) خواهد بود \-\- خروجی دقیقاً مشابه ورودی است. .TP \fB-andmask=\fIhexmask\fP\fP .sp این گزینه تابع انتقال را به AND بیتی با \fIhexmask\fP تبدیل می‌کند. .sp \fIhexmask\fP در مبنای شانزده (هگزادسیمال) است. مثال: \f(CW0f\fP .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-ormask=\fIhexmask\fP\fP .sp این گزینه تابع انتقال را به OR فراگیر بیتی با \fIhexmask\fP تبدیل می‌کند. .sp این گزینه مشابه \fB-andmask\fP است. .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-xormask=\fIhexmask\fP\fP .sp این گزینه تابع انتقال را به XOR انحصاری بیتی با \fIhexmask\fP تبدیل می‌کند. .sp این گزینه مشابه \fB-andmask\fP است. .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-not\fP .sp این گزینه تابع انتقال را به وارون‌سازی منطقی بیتی (مثلاً مقدار نمونهٔ 0xAA به 0x55 تبدیل می‌شود) تبدیل می‌کند. .sp برنامهٔ \fBpnminvert\fP همین کار را برای یک تصویر دیداری دوسطحی که دارای maxval برابر با ۱ است یا از نوع PBM می‌باشد انجام می‌دهد. .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-shiftleft=\fIcount\fP\fP .sp این گزینه تابع انتقال را به شیفت بیتی به چپ به تعداد \fIcount\fP بیت تبدیل می‌کند. .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-shiftright=\fIcount\fP\fP .sp این گزینه تابع انتقال را به شیفت بیتی به راست به تعداد \fIcount\fP بیت تبدیل می‌کند. .sp این گزینه مشابه \fB-shiftleft\fP است. .sp این گزینه در Netpbm نسخهٔ 10.40 (سپتامبر 2007) جدید بود. .TP \fB-changemaxval\fP .sp این گزینه به \fBpamfunc\fP می‌گوید که اگر کارساز باشد، در تصویر خروجی از مقدار maxval متفاوتی نسبت به maxval تصویر ورودی استفاده کند. به‌طور پیش‌فرض، مقدار maxval خروجی نسبت به ورودی بدون تغییر می‌ماند و \fBpamfunc\fP مقادیر نمونه را در صورت نیاز برای انجام عملیات تغییر می‌دهد. .sp اما یک حالت وجود دارد که در آن \fBpamfunc\fP می‌تواند صرفاً با تغییر maxval و دست‌نخورده گذاشتن مقادیر نمونه به همان نتیجه برسد: تقسیم بر عددی بزرگ‌تر یا مساوی ۱، یا ضرب در عددی کوچک‌تر یا مساوی ۱. به عنوان مثال، برای نصف کردن همهٔ مقادیر، \fBpamfunc\fP می‌تواند صرفاً maxval را دو برابر کند. .sp با گزینهٔ \fB-changemaxval\fP، برنامهٔ \fBpamfunc\fP دقیقاً همین کار را انجام خواهد داد. .sp از آنجا که قالب‌های Netpbm دارای حداکثر maxval برابر با ۶۵۵۳۵ هستند، برای مقسوم‌علیه‌های بزرگ، \fBpamfunc\fP ممکن است نتواند از این روش استفاده کند. .sp یک مزیت تقسیم از طریق تغییر maxval این است که دقت را از دست نمی‌دهید. مقدار maxval بالاتر به معنای دقت بالاتر است. به عنوان مثال، تصویری با maxval برابر با ۱۰۰ و مقدار نمونهٔ ۱۰ را در نظر بگیرید. شما آن را بر ۲۱ تقسیم کرده و سپس دوباره در ۲۱ ضرب می‌کنید. اگر \fBpamfunc\fP این کار را با تغییر مقادیر نمونه در حین حفظ maxval روی ۱۰۰ انجام دهد، تقسیم به مقدار نمونهٔ ۰ و ضرب نیز به صفر خواهد انجامید. اما اگر \fBpamfunc\fP در عوض مقدار نمونهٔ ۱۰ را حفظ کند و maxval را تغییر دهد، تقسیم منجر به maxval برابر با ۲۱۰۰ شده و ضرب آن را دوباره به ۱۰۰ بازمی‌گرداند، و این رفت‌وبرگشت بدون افت دقت (همانی) خواهد بود. .sp این گزینه در Netpbm نسخهٔ 10.65 (دسامبر 2013) جدید بود. .UN seealso .SH "همچنین ببینید (SEE ALSO)" .BR "ppmdim" (1)\c \&، .BR "pambrighten" (1)\c \&، .BR "pamdepth" (1)\c \&، .BR "pamarith" (1)\c \&، .BR "pamsummcol" (1)\c \&، .BR "pamsumm" (1)\c \&، .BR "ppmfade" (1)\c \&، .BR "pnminvert" (1)\c \&، .BR "pam" (1)\c \&، .BR "pnm" (1)\c \& .UN history .SH "تاریخچه (HISTORY)" .PP این برنامه در نسخهٔ 10.3 (ژوئن 2002) به Netpbm افزوده شد. .SH "منبع مستندات (DOCUMENT SOURCE)" این صفحه راهنما توسط ابزار Netpbm تحت عنوان 'makeman' از منبع HTML تولید شده است. مستندات اصلی در آدرس زیر قرار دارد: .IP .B http://netpbm.sourceforge.net/doc/pamfunc.html .PP