Pamlookup User Manual(0) Pamlookup User Manual(0)

pamlookup - نگاشت یک تصویر به تصویری جدید با استفاده از آن به عنوان نمایه در یک جدول جستجو

pamlookup -lookupfile=lookupfile [-byplane] -missingcolor=color [-fit] indexfile

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

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

برنامهٔ pamlookup یک آرایهٔ دو بعدی از نمایه‌ها (اندیس‌ها) و یک جدول جستجو (lookup table) را به عنوان ورودی دریافت می‌کند. برای هر موقعیت مکانی در آرایهٔ نمایه، مقدار نمایه را در جدول جستجو می‌یابد و نتیجهٔ جستجو را در تصویر خروجی قرار می‌دهد.

دو روش برای نمایه‌گذاری جدول جستجو وجود دارد: چندتایی کامل (whole tuple) و بر پایهٔ صفحه (by plane). گزینهٔ -byplane تعیین می‌کند که pamlookup از کدام روش استفاده کند.

در ساده‌ترین شکل نمایه‌گذاری چندتایی کامل، هر نمایه در آرایهٔ نمایه یک عدد صحیح نامنفی (حسابی) منفرد است و جدول جستجو یک چندتایی کامل را به هر نمایهٔ عددی ممکن مرتبط می‌سازد. بنابراین برای مثال، آرایهٔ نمایه ممکن است در سطر ۲، ستون ۹ دارای مقدار ۲۳ باشد. جدول جستجو ممکن است چندتایی (1,2,3) را به مقدار ۲۳ اختصاص دهد. در این صورت، تصویر خروجی در سطر ۲، ستون ۹ شامل چندتایی (1,2,3) خواهد بود.

در شکل پیچیده‌تری از نمایه‌گذاری چندتایی کامل، هر نمایه در آرایهٔ نمایه یک جفت‌مرتب از اعداد صحیح نامنفی است و جدول جستجو یک چندتایی کامل را به هر نمایهٔ جفت‌مرتب ممکن مرتبط می‌سازد. با تغییر مثال بالا، مقدار نمایه به جای ۲۳ می‌تواند (23, 5) باشد.

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

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

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

با نمایه‌گذاری بر پایهٔ صفحه، خروجی دارای همان ابعاد تصویر نمایه و همان maxval تصویر جستجو خواهد بود.

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

عرض تصویر جستجو معمولاً باید برابر با مقدار بیشینه (maxval) تصویر نمایه به علاوهٔ یک باشد، تا هر مقدار نمونهٔ نمایه‌ای ممکن، با یک مدخل در جدول جستجو متناظر شود. دو روش وجود دارد که pamlookup با تصویر جستجویی که چنین عرضی ندارد برخورد می‌کند:

  • مقیاس‌بندی تصویر جستجو به عرض مورد نیاز. برنامهٔ pamlookup در نمایه‌گذاری بر پایهٔ صفحه همواره این کار را انجام می‌دهد، و در نمایه‌گذاری چندتایی کامل، زمانی که گزینهٔ -fit را مشخص کنید این کار را انجام خواهد داد.
  • استفاده از یک مقدار پیش‌فرض برای نمایه‌هایی که از عرض تصویر جستجو فراتر می‌روند، و نادیده گرفتن ستون‌های تصویر جستجو که فراتر از maxval تصویر نمایه هستند. برنامهٔ pamlookup در نمایه‌گذاری چندتایی کامل زمانی که -fit را تعیین نکنید، این کار را انجام می‌دهد.

    مقدار پیش‌فرض را با گزینهٔ -missingcolor مشخص می‌کنید؛ مقدار پیش‌فرض آن، مقدار برگرفته از گوشهٔ بالا-چپ تصویر جستجو است.

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

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

می‌توانید از ppmmake و pamcat برای ساخت فایل جدول جستجو استفاده کنید.

در اینجا مثالی از عملکرد pamlookup در نمایه‌گذاری چندتایی کامل (عدم تعیین -byplane) آورده شده است.

یک تصویر نمایه شامل یک PAM با ابعاد 3x2x1 را به صورت زیر در نظر بگیرید:

0 1 0
2 2 2

و یک جدول جستجو متشکل از یک تصویر PPM با ابعاد 3x1 به صورت زیر:

red yellow beige

جدول جستجوی بالا نشان می‌دهد که نمایهٔ 0 متناظر با رنگ قرمز (red)، نمایهٔ 1 متناظر با زرد (yellow)، و نمایهٔ 2 متناظر با بژ (beige) است. خروجی pamlookup تصویر PPM زیر خواهد بود:

red yellow red
beige beige beige

اکنون به مثالی از حالت پیچیده‌تر نگاهی بیندازیم که در آن نمایه‌ها به جای اعداد صحیح منفرد، جفت‌مرتب‌هایی از اعداد صحیح هستند. تصویر نمایهٔ ما این تصویر PAM با ابعاد 3x2x2 خواهد بود:

(0,0) (0,1) (0,0)
(1,1) (1,0) (0,0)

جدول جستجوی ما برای این مثال این تصویر PPM دو بعدی خواهد بود:

red yellow red
black green red

در اینجا مثالی از عملکرد pamlookup با نمایه‌گذاری چندتایی بر پایهٔ صفحه (با تعیین -byplane) آورده شده است.

یک تصویر نمایه شامل یک PAM با ابعاد 3x2x3 را به صورت زیر در نظر بگیرید:

(0,0,0) (1,0,0) (2,0,0)
(2,2,0) (2,0,2) (2,0,0)

و یک جدول جستجو متشکل از یک تصویر PAM با ابعاد 3x1x1 و مقدار maxval برابر با 7 به صورت زیر:

3 4 7

جدول جستجوی بالا بیان می‌کند که نمایهٔ 0 متناظر با مقدار نمونهٔ 3، نمایهٔ 1 متناظر با 4، و نمایهٔ 2 متناظر با 7 است. خروجی pamlookup تصویر PAM با ابعاد 3x2x3 زیر خواهد بود:

(3,3,3) (4,3,3) (7,3,3)
(7,7,3) (7,3,7) (7,3,3)

آرگومان indexfile فایلی را مشخص می‌کند که حاوی تصویر نمایهٔ PAM یا PNM است. علامت - به معنای ورودی استاندارد است. اگر هم فایل تصویر نمایه و هم فایل جدول جستجو ورودی استاندارد باشند، برنامه کار نخواهد کرد.

تصویر خروجی به خروجی استاندارد فرستاده می‌شود.

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

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

lookupfile نام فایلی را تعیین می‌کند که تصویر PAM یا PNM جدول جستجو در آن قرار دارد. تعیین این گزینه اجباری است.
این گزینه نمایه‌گذاری بر پایهٔ صفحه را انتخاب می‌کند. حالت پیش‌فرض، نمایه‌گذاری چندتایی کامل است.

این گزینه در Netpbm نسخهٔ 10.72 (سپتامبر 2015) جدید بود. پیش از آن، نمایه‌گذاری بر پایهٔ صفحه وجود نداشت.

این گزینه تنها زمانی معنادار است که تصویر جستجو (و در نتیجه خروجی) یک تصویر PNM باشد. color رنگی را تعیین می‌کند که هر جا نمایهٔ ورودی در جدول جستجو وجود نداشته باشد، در خروجی قرار می‌گیرد (وجود نداشتن یعنی نمایه از ابعاد تصویر جستجو فراتر رود -- مثلاً نمایه ۱۰۰ باشد اما تصویر جستجو یک PPM با ابعاد 50 x 1 باشد).

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

رنگ (color) را همان‌طور که برای آرگومان زیرروال کتابخانه‌ای pnm_parsecolor() شرح داده شده است مشخص کنید.

روش دیگر برای برخورد با تصویر جستجوی بسیار کوچک، استفاده از گزینهٔ -fit است.

این گزینه در صورتی که -fit یا -byplane را نیز تعیین کنید هیچ اثری نخواهد داشت.

این گزینه بیان می‌کند که تصویر جستجو بر اساس مقدار maxval تصویر نمایه، در صورت لزوم کوچک یا بزرگ شود تا با نمایه‌های موجود در تصویر نمایه مطابقت یابد. برای مثال، اگر تصویر نمایهٔ شما یک تک‌صفحه و maxval برابر با ۲۵۵ داشته باشد و تصویر جستجوی شما یک سطر از ۱۰ ستون باشد، pamlookup پیش از انجام جستجوها تصویر جستجوی شما را تا ۲۵۵ ستون می‌کشد. برنامهٔ pamlookup کشیدن (یا فشرده‌سازی) را با برنامهٔ pamscale(1) انجام می‌دهد.

هنگامی که از -fit استفاده می‌کنید، pamlookup هرگز به دلیل ابعاد نامعتبر تصویر جستجو با شکست مواجه نشده و هشداری صادر نمی‌کند، و گزینهٔ -missingcolor هیچ اثری ندارد.

گزینهٔ -fit زمانی که -byplane را مشخص کنید اثری ندارد. pamlookup در زمان نمایه‌گذاری بر پایهٔ صفحه، همواره رفتاری مشابه رفتار درخواست‌شده با -fit را خواهد داشت.

فرض کنید مجموعه‌ای از داده‌های بارندگی در یک تصویر PAM تک‌صفحه‌ای دارید. سطرها و ستون‌های تصویر PAM بیانگر عرض و طول جغرافیایی هستند. مقادیر نمونه‌ها میزان بارندگی سالانه به سانتی‌متر (کامل) هستند. بالاترین مقدار بارندگی در تصویر ۱۹۹ سانتی‌متر است. تصویر در فایل rainfall.pam قرار دارد.

شما می‌خواهید یک نقشهٔ بارش PPM با رنگ سبز برای پرباران‌ترین مکان‌ها، قرمز برای خشک‌ترین نقاط و رنگ‌های دیگر در این بین تولید کنید.

ابتدا یک تصویر جدول جستجو بسازید، احتمالاً با یک ویرایشگر گرافیکی و با بزرگ‌نمایی بسیار زیاد تصویر تا بتوانید روی تک‌تک پیکسل‌ها کار کنید. تصویر باید یک تک‌سطر و ۲۰۰ ستون داشته باشد. چپ‌ترین پیکسل را قرمز و راست‌ترین را سبز کنید و رنگ‌های مناسب را برای فواصل میان آن‌ها برگزینید. نام آن را colorkey.ppm بگذارید.


    pamlookup rainfall.pam -lookupfile=colorkey.ppm >rainfallmap.ppm

حالا فرض کنید حوصله ندارید ۲۰۰ مقدار رنگ را وارد کنید و برای کسی هم اهمیت چندانی ندارد مکان‌هایی که بیش از ۹۹ سانتی‌متر بارندگی سالانه دارند مشخص شوند. در این حالت، کافی است عرض colorkey.ppm را ۱۰۰ ستون در نظر بگیرید و این دستور را اجرا کنید:


    pamlookup rainfall.ppm -lookupfile=colorkey.ppm -missingcolor=black \
       >rainfallmap.ppm

اکنون اگر مناطقی وجود داشته باشند که بیش از ۱۰۰ سانتی‌متر بارندگی دارند، در خروجی صرفاً به رنگ سیاه نمایش داده خواهند شد.

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

ابتدا، یک تصویر واحد می‌سازیم که حاوی اطلاعات هر دو تصویر ورودی PBM باشد:


    pamstack image1.pbm image2.pbm >bothimages.pam

توجه داشته باشید که این تصویر در هر مکان دارای یکی از ۴ مقدار چندتایی ممکن است: (0,0)، (0,1)، (1,0) یا (1,1).

اکنون، یک جدول جستجو می‌سازیم که بتوانیم با آن ۴ مقدار، درون آن جستجو کنیم:


    ppmmake white 1 1 >white.ppm
    ppmmake black 1 1 >black.ppm
    ppmmake red   1 1 >red.ppm
    ppmmake green 1 1 >green.ppm
    pamcat -leftright black.ppm red.ppm   >blackred.ppm
    pamcat -leftright green.ppm white.ppm >greenwhite.ppm
    pamcat -topbottom blackred.ppm greenwhite.ppm >lookup.ppm

در نهایت، نمایه‌ها را از نمایهٔ خود در جدول جستجو پیدا کرده و خروجی را تولید می‌کنیم:


    pamlookup bothimages.ppm -lookupfile=lookup.ppm >imagediff.ppm

pamunlookup(1)، pnmremap(1)، ppmmake(1)، pamcat(1)، pamstack(1)، pnm(1)، pam(1)

برنامهٔ pamlookup در Netpbm نسخهٔ 10.13 (دسامبر 2002) جدید بود.

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

http://netpbm.sourceforge.net/doc/pamlookup.html
25 July 2015 netpbm documentation