PBMTOJBG(1) General Commands Manual PBMTOJBG(1)

pbmtojbg - تبدیل‌کنندهٔ فایل‌های بیت‌مپ قابل‌حمل (PBM) به JBIG1

pbmtojbg [ options ] [ input-file | - [ output-file ]]

یک تصویر بیت‌مپ قابل‌حمل (PBM) را از یک فایل یا ورودی استاندارد می‌خواند، آن را فشرده می‌کند و تصویر خروجی را در قالب یک فایل موجودیت تصویر دو-سطحی (BIE) با فرمت JBIG1 تولید می‌کند.

JBIG1 یک الگوریتم فشرده‌سازی بی‌اتلاف بسیار کارآمد برای تصاویر دو-سطحی (یک بیت به ازای هر پیکسل) است که به‌ویژه برای صفحات اسکن‌شدهٔ اسناد مناسب است.

یک تصویر کدگذاری‌شده با JBIG1 می‌تواند در چندین تفکیک‌پذیری (حالت پیش‌رونده یا progressive) ذخیره شود. این لایه‌های تفکیک‌پذیری می‌توانند همگی در یک BIE منفرد یا در چندین فایل BIE جداگانه ذخیره شوند. تمامی لایه‌های تفکیک‌پذیری به‌جز پایین‌ترین لایه، صرفاً به عنوان تفاضل نسبت به لایهٔ تفکیک‌پذیری پایین‌تر بعدی ذخیره می‌شوند؛ زیرا این کار در مقایسه با کدگذاری هربارهٔ تصویر کامل، به فضای کمتری نیاز دارد. هر لایهٔ تفکیک‌پذیری دو برابر لایهٔ پایین‌تر خود پیکسل‌های افقی و عمودی دارد. فایل‌های JBIG1 همچنین می‌توانند چندین بیت به ازای هر پیکسل را به صورت صفحه‌های بیت‌مپ جداگانه ذخیره کنند، و pbmtojbg می‌تواند یک فایل PGM را خوانده و آن را به یک BIE چند-صفحه‌بیتی (multi-bitplane) تبدیل کند.

-
یک خط تیرهٔ منفرد به‌جای نام فایل ورودی باعث می‌شود pbmtojbg داده‌ها را به‌جای فایل، از ورودی استاندارد بخواند.
کدگذاری تصویر در یک تک‌لایهٔ تفکیک‌پذیری (حالت ترتیبی یا sequential). این روش معمولاً کارآمدترین شیوهٔ فشرده‌سازی است. به‌طور پیش‌فرض، تعداد لایه‌های تفکیک‌پذیری به‌گونه‌ای خودکار انتخاب می‌شود که تصویرِ پایین‌ترین لایه بزرگ‌تر از 640 × 480 پیکسل نباشد. این گزینه میان‌بری برای -d 0 است.
تعیین حداکثر اندازهٔ افقی پایین‌ترین لایهٔ تفکیک‌پذیری. مقدار پیش‌فرض ۶۴۰ پیکسل است.
تعیین حداکثر اندازهٔ عمودی پایین‌ترین لایهٔ تفکیک‌پذیری. مقدار پیش‌فرض ۴۸۰ پیکسل است.
انتخاب پایین‌ترین لایهٔ تفکیک‌پذیری که در BIE نوشته خواهد شد. ذخیرهٔ لایه‌های تفکیک‌پذیری گوناگون یک تصویر JBIG1 در حالت پیش‌رونده درون BIEهای مجزا امکان‌پذیر است. گزینه‌های -l و -h امکان تعیین بازهٔ لایه‌های تفکیک‌پذیری را که در BIE ساخته‌شده قرار می‌گیرند فراهم می‌کنند. شمارهٔ پایین‌ترین لایهٔ تفکیک‌پذیری 0 است و این مقدار پیش‌فرض نیز هست. به‌طور پیش‌فرض تمام لایه‌ها نوشته خواهند شد.
انتخاب بالاترین لایهٔ تفکیک‌پذیری که در BIE نوشته خواهد شد. به‌طور پیش‌فرض تمام لایه‌ها نوشته خواهند شد. همچنین گزینهٔ -l را ببینید.
استفاده از مقادیر دودویی (باینری) به‌جای کلمات کد گری (Gray code) برای کدگذاری مقادیر پیکسل‌ها در چند صفحهٔ بیتی. این گزینه تنها زمانی مؤثر است که ورودی یک فایل PGM باشد و بیش از یک صفحهٔ بیتی تولید شود. توجه داشته باشید که رمزگشا نیز باید همین انتخاب را انجام دهد اما نمی‌تواند از روی BIE تشخیص دهد که کدگذار از کلمات کد گری استفاده کرده است یا باینری.
تعیین تعداد کل لایه‌های تفکیک‌پذیری تفاضلی علاوه بر پایین‌ترین لایه که تصویر ورودی به آن‌ها تقسیم می‌شود. هر لایهٔ اضافی، اندازهٔ لایهٔ 0 را ۵۰٪ کاهش می‌دهد. این گزینه بر گزینه‌های -x و -y که معمولاً روش ساده‌تری برای انتخاب تعداد لایه‌های تفکیک‌پذیری هستند، اولویت دارد.
الگوریتم JBIG1 هر تصویر را به تعدادی نوار (stripe) افقی تقسیم می‌کند. این گزینه مشخص می‌کند که هر نوار در لایهٔ 0 باید شامل number خط باشد. مقدار پیش‌فرض به‌گونه‌ای انتخاب شده است که تقریباً ۳۵ نوار برای کل تصویر استفاده شود.
انتخاب حداکثر آفست (جابه‌جایی) افقی پیکسل الگوی تطبیقی. کدگذار JBIG1 از ده پیکسل همسایه برای برآورد احتمال سیاه یا سفید بودن پیکسل بعدی استفاده می‌کند. این کدگذار می‌تواند یکی از این ده پیکسل را جابه‌جا کند. این قابلیت به‌ویژه برای تصاویر ترام‌دار (dithered) مفید است، به شرط آنکه فاصلهٔ این پیکسل تطبیقی با دورهٔ تناوب الگوی ترام تنظیم شود. به‌طور پیش‌فرض، پیکسل الگوی تطبیقی مجاز است تا ۸ پیکسل به‌صورت افقی جابه‌جا شود. این کدگذار فاصله‌های تا ۱۲۷ پیکسل را پشتیبانی می‌کند. پیوست A استاندارد پیشنهاد می‌کند که رمزگشاها حداقل از فاصلهٔ افقی ۱۶ پیکسل پشتیبانی کنند؛ بنابراین استفاده از مقادیر حداکثر تا ۱۶ برای number ممکن است شانس سازگاری با سایر پیاده‌سازی‌های JBIG1 را افزایش دهد. از سوی دیگر، نمایهٔ کاربردی فکس T.85 از رمزگشاها می‌خواهد که از آفست‌های افقی تا ۱۲۷ پیکسل (حداکثر مقدار مجاز در استاندارد) پشتیبانی کنند. (حداکثر آفست عمودی پیکسل الگوی تطبیقی برای این کدگذار همواره صفر است.)
تنها تعداد مشخص‌شده‌ای از باارزش‌ترین صفحه‌های بیتی (most significant bit planes) را کدگذاری می‌کند. این گزینه اجازه می‌دهد تا در صورت عدم نیاز به تمام بیت‌های هر پیکسل در خروجی، عمق فایل PGM ورودی کاهش یابد.
JBIG1 تصویر را به چندین نوار افقی، لایهٔ تفکیک‌پذیری و صفحه تقسیم می‌کند، که در آن هر صفحه شامل یک بیت به ازای هر پیکسل است. یک نوار منفرد در یک صفحه و لایه، به عنوان یک واحد داده موسوم به موجودیت دادهٔ نوار (SDE) درون BIE کدگذاری می‌شود. ۱۲ ترتیب مختلف برای ذخیره‌سازی SDEها درون BIE وجود دارد و number مشخص می‌کند که کدام ترتیب باید استفاده شود. ترتیب SDEها تنها برای برنامه‌هایی اهمیت دارد که می‌خواهند یک فایل JBIG1 ناقص (مثلاً دریافتی از یک اتصال شبکهٔ کُند) را پیش از اتمام دریافت، رمزگشایی کنند. برای نمونه، برخی برنامه‌ها ترجیح می‌دهند که بیرونی‌ترین حلقه از میان سه حلقه (نوارها، لایه‌ها، صفحه‌ها) روی تمام لایه‌ها باشد تا داده‌های پایین‌ترین لایهٔ تفکیک‌پذیری ابتدا مخابره شوند.
مقادیر زیر برای number چینش این حلقه‌ها را هنگام نوشتن SDEها تعیین می‌کنند (حلقهٔ بیرونی‌تر در ابتدا):


0 planes, layers, stripes
2 layers, planes, stripes
3 layers, stripes, planes
4 stripes, planes, layers
5 planes, stripes, layers
6 stripes, layers, planes

شمارش تمام حلقه‌ها از صفر شروع می‌شود؛ با این حال با افزودن عدد ۸ به کد ترتیب بالا، حلقهٔ لایه‌ها معکوس می‌شود تا به صورت نزولی تا صفر شمارش کند و لایه‌های با تفکیک‌پذیری بالاتر پیش از لایه‌های پایین‌تر ذخیره شوند. ترتیب پیش‌فرض ۳ است که ابتدا تمام صفحه‌های نوار اول را می‌نویسد و سپس لایهٔ 0 را تکمیل می‌کند و سپس به لایهٔ بعدی می‌رود و به همین ترتیب ادامه می‌دهد.

این گزینه امکان فعال یا غیرفعال کردن الگوریتم‌های اختیاری تعریف‌شده در استاندارد JBIG1 را فراهم می‌کند. کافی است اعداد مربوط به گزینه‌های مورد نظر زیر را با یکدیگر جمع کنید تا مقدار number به دست آید:


4 deterministic prediction (DPON)
8 layer 0 typical prediction (TPBON)
16 diff. layer typ. pred. (TPDON)
64 layer 0 two-line template (LRLTWO)

به‌جز کاربردهای خاص (مانند ارتباط با پیاده‌سازی‌های زیرمجموعهٔ JBIG1) و اهداف اشکال‌زدایی، معمولاً نیازی به تغییر این مقادیر نخواهید داشت. مقدار پیش‌فرض ۲۸ است که بهترین نتیجهٔ فشرده‌سازی را فراهم می‌آورد.

افزودن رشتهٔ string درون یک قطعه نشانگر توضیح (comment marker segment) به جریان دادهٔ تولیدشده. (در حال حاضر از افزودن توضیحاتی که حاوی بایت صفر باشند پشتیبانی نمی‌شود.)
تعیین حرکت پیکسل الگوی تطبیقی بر اساس پیشنهاد ارائه‌شده در پیوست C استاندارد. به‌طور پیش‌فرض تغییر الگو مستقیماً در خط بعدی انجام می‌شود که بیشترین کارایی را دارد. با این حال، تعداد کمی از آزمون‌های انطباق در استاندارد نیازمند آن هستند که تغییر الگوی تطبیقی تا اولین خط نوار بعدی به تعویق بیفتد. این گزینه این رفتار ویژه را فعال می‌کند که معمولاً به‌جز برای گذراندن برخی آزمون‌های انطباق نیازی به آن نیست.
استفاده از نشانگر SDRST به‌جای نشانگر عادی SDNORM. احتمالاً تنها کاربرد مفید این گزینه، تولید داده‌های آزمایشی برای بررسی صحت پیاده‌سازی SDRST در یک رمزگشای JBIG1 است. در یک جریان دادهٔ عادی JBIG1، هر موجودیت دادهٔ نوار (SDE) با یک نشانگر SDNORM پایان می‌یابد که وضعیت کدگذار حسابی (و موارد دیگر) را برای نوار بعدی در همان لایه حفظ می‌کند. نشانگر جایگزین SDRST این وضعیت را در انتهای نوار بازنشانی می‌کند.
در گذشته‌های دور، دستگاه‌های فکسی وجود داشتند که حتی توانایی ذخیرهٔ یک صفحهٔ کامل را در حافظه نداشتند. آن‌ها مجبور بودند مخابرهٔ داده‌ها را پیش از اسکن کامل صفحه و مشخص شدن ارتفاع تصویر آغاز کنند. طراحان استاندارد برای پشتیبانی از این وضعیت، یک وصلهٔ ناجور به فرمت بی‌نقص JBIG1 اضافه کردند. قطعه نشانگر NEWLEN می‌تواند ارتفاع تصویر مشخص‌شده در سرآیند BIE را بعداً در هر نقطه‌ای از جریان داده بازنویسی کند. در حالت عادی pbmtojbg هرگز نشانگر NEWLEN را تولید نمی‌کند، زیرا هنگام نوشتن سرآیند از ارتفاع درست تصویر آگاه است. این گزینه صرفاً برای تولید فایل‌های آزمایشی دارای نشانگر NEWLEN کاربرد دارد. می‌توان از آن برای مشخص کردن یک ارتفاع اولیهٔ بزرگ‌تر در سرآیند BIE استفاده کرد؛ سپس pbmtojbg در آخرین فرصت ممکن یک نشانگر NEWLEN را به جریان داده اضافه می‌کند تا ارتفاع نهایی درست را اعلام کند.
این گزینه فایل خروجی را با «نمایهٔ کاربردی نمابر» (facsimile application profile) تعریف‌شده در توصیه‌نامهٔ ITU-T T.85 سازگار می‌کند. این گزینه میان‌بری برای -q -o 0 -p 8 -s 128 -t 1 -m 127 است.
پس از ایجاد BIE، برخی جزئیات فنی فایل ایجادشده نمایش داده می‌شود (حالت پُرگو یا verbose).

استفاده از ورودی و خروجی استاندارد برای داده‌های باینری تنها در سیستم‌هایی به درستی کار می‌کند که تفاوتی بین جریان‌های متنی و باینری قائل نمی‌شوند (مانند Unix). در سایر سیستم‌ها (مانند MS-DOS)، استفاده از ورودی یا خروجی استاندارد ممکن است باعث درج یا حذف نویسه‌های کنترلی مانند CR یا LF شود که به داده‌های باینری آسیب می‌رساند.

این برنامه الگوریتم کدگذاری تصویر JBIG1 را طبق استانداردهای ISO/IEC 11544:1993 و ITU-T T.82(1993) پیاده‌سازی می‌کند.

برنامهٔ pbmtojbg بخشی از بستهٔ JBIG-KIT است که توسط Markus Kuhn توسعه داده شده است. جدیدترین نسخهٔ این کتابخانهٔ قابل‌حمل و مجموعه ابزارهای JBIG1 از نشانی زیر در دسترس است: http://www.cl.cam.ac.uk/~mgk25/jbigkit

pbm(5)، pgm(5)، jbgtopbm(1)

2003-06-04