| dcmicmp(1) | OFFIS DCMTK | dcmicmp(1) |
نام (NAME)
dcmicmp - مقایسه تصاویر DICOM و محاسبه معیارهای تفاوت
خلاصه دستور (SYNOPSIS)
dcmicmp [options] dcmfile-in-1 dcmfile-in-2
توضیحات (DESCRIPTION)
ابزار dcmicmp دو تصویر DICOM را میخواند؛ یک «تصویر مرجع» اصلی و یک «تصویر آزمون» پسپردازششده که نوعی پردازش مانند فشردهسازی با اتلاف تصویر و به دنبال آن فشردهگشایی بر روی آن اعمال شده است. این ابزار مستلزم آن است که هر دو تصویر دارای تفکیکپذیری یکسان، تعداد فریمهای یکسان و هر دو رنگی یا تکرنگ باشند. تصاویر فشردهشده پشتیبانی نمیشوند.
سپس ابزار dcmicmp هر دو تصویر را با یکدیگر مقایسه کرده و معیارهایی را که نشاندهنده میزان شباهت یا تفاوت آنها است محاسبه و چاپ میکند:
- حداکثر خطای مطلق (maximum absolute error) بیشترین اختلاف بین مقدار یک پیکسل در تصویر مرجع و مقدار پیکسل متناظر آن در تصویر آزمون است.
- میانگین خطای مطلق (MAE) میانگین اختلاف بین مقدار پیکسل اصلی و مقدار پیکسل تصویر آزمون است.
- جذر میانگین مربعات خطا (RMSE) از طریق جمع کردن مجذور تمام مقادیر اختلاف، تقسیم آن بر تعداد مقادیر جمعشده و سپس محاسبه جذر آن به دست میآید.
- نسبت بیشینه سیگنال به نویز (PSNR) تصویر مرجع را به عنوان سیگنال و تفاوتهای بین تصویر مرجع و آزمون را به عنوان نویز در نظر میگیرد. مقدار PSNR برابر است با بیشینه توان سیگنال (یعنی حداکثر مقدار پیکسل در تصویر مرجع) تقسیم بر RMSE، که در مقیاس لگاریتمی بر حسب dB بیان میشود.
- نسبت سیگنال به نویز (SNR) نیز تصویر مرجع را به عنوان سیگنال و تفاوتهای بین تصویر مرجع و آزمون را به عنوان نویز در نظر میگیرد. مقدار SNR برابر است با میانگین توان سیگنال تقسیم بر RMSE، که در مقیاس لگاریتمی بر حسب dB بیان میشود.
تمام معیارها مطابق با تعاریف ارائهشده در کتاب «پردازش تصویر دیجیتال» نوشته R.C. Gonzalez و R.E. Woods، انتشارات Prentice Hall سال ۲۰۰۸ محاسبه میشوند.
پارامترها (PARAMETERS)
dcmfile-in-1 فایل تصویر مرجع DICOM برای مقایسه
dcmfile-in-2 فایل تصویر آزمون DICOM برای مقایسه ("-" برای stdin)
گزینهها (OPTIONS)
گزینههای عمومی (general options)
-h --help
چاپ این متن راهنما و خروج
--version
چاپ اطلاعات نسخه و خروج
--arguments
چاپ آرگومانهای بسطیافته خط فرمان
-q --quiet
حالت بیصدا، عدم چاپ هشدارها و خطاها
-v --verbose
حالت پرگو، چاپ جزئیات پردازش
-d --debug
حالت اشکالزدایی، چاپ اطلاعات اشکالزدایی
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace)
استفاده از سطح l برای logger
-lc --log-config [f]ilename: string
استفاده از فایل پیکربندی f برای logger
گزینههای ورودی (input options)
قالب فایل ورودی:
+f --read-file
خواندن قالب فایل یا مجموعه داده (پیشفرض)
+fo --read-file-only
فقط خواندن قالب فایل
-f --read-dataset
خواندن مجموعه داده بدون اطلاعات فرادادهای فایل
سینتکس انتقال ورودی:
-t= --read-xfer-auto
استفاده از تشخیص خودکار TS (پیشفرض)
-td --read-xfer-detect
نادیده گرفتن TS مشخصشده در سرآیند فراداده فایل
-te --read-xfer-little
خواندن با TS از نوع explicit VR little endian
-tb --read-xfer-big
خواندن با TS از نوع explicit VR big endian
-ti --read-xfer-implicit
خواندن با TS از نوع implicit VR little endian
تبدیل modality LUT:
+M --use-modality
استفاده از تبدیل modality LUT (پیشفرض)
-M --no-modality
نادیدهگرفتن تبدیل modality LUT ذخیرهشده
تبدیل VOI LUT:
-W --no-windowing
بدون پنجرهبندی VOI (پیشفرض)
+Wi --use-window [n]umber: integer
استفاده از n-امین پنجرهٔ VOI از فایل تصویر
+Wl --use-voi-lut [n]umber: integer
استفاده از n-امین جدول تبدیل (look up table) VOI از فایل تصویر
+Wm --min-max-window
محاسبهٔ پنجرهٔ VOI با استفاده از الگوریتم min-max
بهطور جداگانه روی هر دو تصویر
+Wn --min-max-window-n
محاسبهٔ پنجرهٔ VOI با استفاده از الگوریتم min-max
بهطور جداگانه روی هر دو تصویر، با نادیدهگرفتن مقادیر حدی
+Wr --min-max-ref
محاسبهٔ پنجرهٔ VOI با استفاده از الگوریتم min-max
و استفاده از همان پنجره برای تصویر آزمایشی
+Wq --min-max-n-ref
محاسبهٔ پنجرهٔ VOI با استفاده از الگوریتم min-max،
با نادیدهگرفتن مقادیر حدی
و استفاده از همان پنجره برای تصویر آزمایشی
+Ww --set-window [c]enter [w]idth: float
محاسبهٔ پنجرهٔ VOI با استفاده از مرکز c و پهنای w
+Wfl --linear-function
تنظیم تابع VOI LUT روی LINEAR
+Wfs --sigmoid-function
تنظیم تابع VOI LUT روی SIGMOID
تبدیل presentation LUT:
+Pid --identity-shape
تنظیم شکل presentation LUT روی IDENTITY
+Piv --inverse-shape
تنظیم شکل presentation LUT روی INVERSE
+Pod --lin-od-shape
تنظیم شکل presentation LUT روی LIN OD
گزینههای معیارهای مقایسه تصویر (image comparison metrics options)
+ce --check-error [l]imit: integer
بررسی اینکه آیا حداکثر خطای مطلق <= limit است
# در صورتی که حداکثر خطای مطلق محاسبهشده بزرگتر از حد تعیینشده باشد،
# کد خروج EXITCODE_LIMIT_EXCEEDED_MAX_ERROR برگردانده میشود.
+cm --check-mae [l]imit: float
بررسی اینکه آیا میانگین خطای مطلق <= limit است
# در صورتی که میانگین خطای مطلق محاسبهشده بزرگتر از حد تعیینشده باشد،
# کد خروج EXITCODE_LIMIT_EXCEEDED_MAE برگردانده میشود.
+cr --check-rmse [l]imit: float
بررسی اینکه آیا ریشهٔ میانگین مربعات خطا <= limit است
# در صورتی که ریشهٔ میانگین مربعات خطای محاسبهشده بزرگتر از حد تعیینشده باشد،
# کد خروج EXITCODE_LIMIT_EXCEEDED_RMSE برگردانده میشود.
+cp --check-psnr [l]imit: float
بررسی اینکه آیا PSNR >= limit است
# در صورتی که نسبت بیشینه سیگنال به نویز (PSNR) محاسبهشده کمتر از حد تعیینشده باشد،
# کد خروج EXITCODE_LIMIT_EXCEEDED_PSNR برگردانده میشود
# (برای PSNR، مقادیر بالاتر به معنای کیفیت بهتر تصویر است)
+cs --check-snr [l]imit: float
بررسی اینکه آیا SNR >= limit است
# در صورتی که نسبت سیگنال به نویز محاسبهشده کمتر از حد تعیینشده باشد،
# کد خروج EXITCODE_LIMIT_EXCEEDED_PSNR برگردانده میشود
# (برای SNR، مقادیر بالاتر به معنای کیفیت بهتر تصویر است)
+sd --save-diff [f]ilename: string
نوشتن تصویر تفاضلی secondary capture
# ایجاد یک تصویر Multiframe Secondary Capture که شامل یک تصویر تفاضلی بین
# تصویر مرجع و آزمون است. برای تصاویر تکرنگ (monochrome)، یک فریم تفاضلی
# به ازای هر فریم در تصویر مرجع ایجاد میشود. برای تصاویر رنگی، سه فریم
# تکرنگ به ازای هر فریم در تصویر مرجع ایجاد میشود که متناظر با تفاوتها در
# صفحات رنگی قرمز، سبز و آبی هستند. تصویر تفاضلی بر اساس ویژگیهای تصویر
# مرجع، دارای BitsStored برابر با ۸ یا ۱۶ خواهد بود.
+a --amplify [f]actor: float
ضرب مقادیر پیکسل تصویر تفاضلی در f
# این گزینه میتواند برای تقویت مقادیر مقیاس خاکستری (grayscale) در تصویر
# تفاضلی از طریق ضرب هر مقدار در ضریب دادهشده استفاده شود. به عنوان
# روش جایگزین، ممکن است هنگام مصورسازی تصویر تفاضلی از یک پنجره DICOM VOI LUT
# استفاده شود.
نکات (NOTES)
خط لوله نمایش مقیاس خاکستری (grayscale display pipeline)
تصاویر تکرنگ DICOM نیازمند اجرای یک خط لوله نمایش چندمرحلهای هستند تا مقادیر خام پیکسل به مقادیر موسوم به مقادیر ارائه (p-values) که به نمایشگر (احتمالاً کالیبرهشده) ارسال میشوند تبدیل گردند. هنگام مقایسه شباهت تصاویر پیش و پس از پسپردازش، فعالسازی برخی از مراحل این خط لوله نمایش پیش از محاسبه تصویر تفاضلی و معیارها میتواند سودمند باشد. گزینههای پردازش تصویر به فراخواننده اجازه میدهند تبدیلات Modality LUT، VOI LUT و Presentation LUT را فعال یا غیرفعال کند. در هر صورت، تبدیل یکسانی بر روی هر دو تصویر اعمال میشود، اگرچه ممکن است با پارامترهای متفاوت باشد؛ برای مثال اگر «اولین پنجره VOI LUT» ذخیرهشده در هر تصویر اعمال گردد. این امر با این فرض صورت میگیرد که الگوریتم پسپردازش (مانند الگوریتم فشردهسازی) مقادیر چنین پنجرههایی را در حین فشردهسازی بهگونهای تطبیق داده است که نمایش تصویر پس از اعمال پنجره تا حد ممکن به مرجع نزدیک باشد. برای تصاویر با بیش از ۸ بیت در هر نمونه (bits/sample) ممکن است دانستن اینکه کدام تبدیل VOI LUT توسط کاربر هنگام مشاهده تصویر اعمال میشود اهمیت داشته باشد، زیرا این موضوع میتواند بر کیفیت ادراکشده تصویر اثر بگذارد. بنابراین، پارامترهای مطلق Window را نیز میتوان با گزینه --set-window مشخص کرد که متعاقباً بر روی هر دو تصویر اعمال خواهند شد.
مناسب بودن تصاویر برای اهداف تشخیصی (suitability of images for diagnostic purposes)
کاربر همچنین باید توجه داشته باشد که معیارهای محاسبهشده توسط این ابزار نمیتوانند مناسب بودن تصویر فشردهشده با اتلاف (lossy) را برای اهداف تشخیصی پیشبینی یا برآورد کنند. برای این منظور، پردازش تصویر بسیار پیچیدهتر و درک محتوای تصویر (مانند اندام یا عضو بدن) مورد نیاز خواهد بود. معیارهای محاسبهشده صرفاً تخمینی از میزان اعوجاج ناشی از پسپردازش ارائه میدهند - نه بیشتر و نه کمتر.
ساختارهای انتقال (TRANSFER SYNTAXES)
dcmicmp از ساختارهای انتقال (transfer syntaxes) زیر برای ورودی پشتیبانی میکند:
LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2 LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1 DeflatedExplicitVRLittleEndianTransferSyntax 1.2.840.10008.1.2.1.99 (*) BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2
فایل تصویر تفاضلی همواره با ساختار Little Endian Implicit Transfer Syntax نوشته میشود.
(*) در صورتی که با فعال بودن پشتیبانی از zlib کامپایل شده باشد
گزارشگیری (LOGGING)
سطح خروجی گزارشگیری (logging) ابزارهای خط فرمان مختلف و کتابخانههای زیربنایی میتواند توسط کاربر مشخص شود. به طور پیشفرض، تنها خطاها و هشدارها در جریان خطای استاندارد (standard error) نوشته میشوند. با استفاده از گزینه --verbose پیامهای اطلاعرسانی مانند جزئیات پردازش نیز گزارش میشوند. گزینه --debug میتواند برای دریافت جزئیات بیشتر درباره فعالیتهای داخلی، به عنوان مثال برای اهداف اشکالزدایی، به کار رود. سایر سطوح گزارشگیری را میتوان با استفاده از گزینه --log-level انتخاب کرد. در حالت --quiet فقط خطاهای مهلک گزارش میشوند. در چنین رخدادهای خطای بسیار شدیدی، برنامه معمولاً خاتمه مییابد. برای جزئیات بیشتر در مورد سطوح مختلف گزارشگیری، به مستندات ماژول «oflog» مراجعه کنید.
در صورتی که خروجی گزارشگیری باید در یک فایل نوشته شود (اختیاراً همراه با چرخش فایل گزارش یا همان logfile rotation)، یا به syslog (یونیکس) یا event log (ویندوز) ارسال گردد، میتوان از گزینه --log-config استفاده کرد. این فایل پیکربندی همچنین امکان هدایت پیامهای مشخصی به یک جریان خروجی معین و فیلتر کردن پیامها بر اساس ماژول یا برنامهای که در آن ایجاد شدهاند را فراهم میکند. یک نمونه فایل پیکربندی در مسیر <etcdir>/logger.cfg ارائه شده است.
خط فرمان (COMMAND LINE)
تمامی ابزارهای خط فرمان از شیوه نمادگذاری زیر برای پارامترها استفاده میکنند: کروشهها مقادیر اختیاری (۰-۱) را در بر میگیرند، سه نقطه در انتها نشاندهنده مجاز بودن چندین مقدار (۱-n) است، و ترکیبی از هر دو به معنای ۰ تا n مقدار میباشد.
گزینههای خط فرمان به ترتیب با یک علامت «+» یا «-» پیشرو از پارامترها متمایز میشوند. معمولاً ترتیب و موقعیت گزینههای خط فرمان اختیاری است (یعنی میتوانند در هر جایی ظاهر شوند). با این حال، اگر گزینهها ناسازگار با یکدیگر (mutually exclusive) باشند، آخرین نمونه در سمت راست اعمال میشود. این رفتار با قواعد ارزیابی استاندارد در شلهای متداول یونیکس سازگار است.
علاوه بر این، یک یا چند فایل فرمان را میتوان با استفاده از علامت «@» به عنوان پیشوند نام فایل مشخص کرد (مانند @command.txt). چنین آرگومان فرمانی پیش از هرگونه پردازش بیشتر، با محتوای فایل متنی متناظر جایگزین میشود (فاصلههای خالی متعدد به عنوان یک جداکننده واحد در نظر گرفته میشوند مگر اینکه بین دو علامت نقلقول قرار گرفته باشند). لطفاً توجه داشته باشید که یک فایل فرمان نمیتواند حاوی فایل فرمان دیگری باشد.
کدهای خروج (EXIT CODES)
ابزار dcmicmp هنگام خاتمه از کدهای خروج زیر استفاده میکند. این به کاربر امکان میدهد تا دلیل پایان کار برنامه را بررسی کند.
عمومی (general)
EXITCODE_NO_ERROR 0 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
خطاهای فایل ورودی/خروجی (input/output file errors)
EXITCODE_INVALID_INPUT_FILE 22 EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40
EXITCODE_INITIALIZE_DIFF_IMAGE 80 EXITCODE_DISPLAY_PIPELINE 81 EXITCODE_IMAGE_COMPARISON 82
کدهای خطای فراتر رفتن از حد مجاز
EXITCODE_LIMIT_EXCEEDED_MAX_ERROR 90 EXITCODE_LIMIT_EXCEEDED_MAE 91 EXITCODE_LIMIT_EXCEEDED_RMSE 92 EXITCODE_LIMIT_EXCEEDED_PSNR 93 EXITCODE_LIMIT_EXCEEDED_SNR 94
محیط (ENVIRONMENT)
ابزار dcmicmp تلاش خواهد کرد دیکشنریهای داده DICOM مشخصشده در متغیر محیطی DCMDICTPATH را بارگذاری کند. بهطور پیشفرض، یعنی در صورتی که متغیر محیطی DCMDICTPATH مقداردهی نشده باشد، فایل <datadir>/dicom.dic بارگذاری خواهد شد، مگر اینکه دیکشنری درون خود برنامه تعبیه شده باشد (پیشفرض در ویندوز).
رفتار پیشفرض ارجح است و متغیر محیطی DCMDICTPATH تنها باید در صورتی استفاده شود که به دیکشنریهای داده جایگزین نیاز باشد. ساختار متغیر محیطی DCMDICTPATH مانند متغیر PATH در شل یونیکس است و از دونقطه (":") برای جداسازی ورودیها استفاده میکند. در سیستمهای ویندوز، از نقطه-ویرگول (";") بهعنوان جداکننده استفاده میشود. کد دیکشنری داده تلاش خواهد کرد هر فایل مشخصشده در متغیر محیطی DCMDICTPATH را بارگذاری کند. بارگذاری نشدن هیچیک از دیکشنریهای داده خطا محسوب میشود.
همچنین ببینید (SEE ALSO)
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (C) 2018-2025 توسط OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
| Thu Jul 9 2026 18:43:40 | Version 3.7.0 |