کلیدستان

نسخه‌ی کامل: تبدیل تصویر 12 بیتی به 8 بیتی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام . من یه تصویر دارم که ماکزیمم مقدارش 6659 هست  بنابراین 12 بیتی می خوام اونو به 8 بیتی تبدیل کنم که ماکزش بشه 255 چیکار باید بکنم؟ تقسیم بر 255 که ماکزش میشه 257!
سلام.
از دستور im2uint8 استفاده کنید.

مثال :

کد:
clear all
close all
clc

A=imread('image.png');
A=im2uint8(A);
نه آخه تصویر معمولی نیست که من از این دستور بخوام استفاده کنم . یه دیتا هست (.mat )
تو یه مقاله خوندم گفته بود دقت رادیومتریکش 12 بیت هست ولی در این مقاله ما روشهامون رو روی تصویر 8 بیتی اجرا می کنیم. خواستم ببینم چجوری
راستی بیشتر از 3 باندم داره
هر تصویری باید ابتدا در یک متغیر ذخیره بشه (به صورت دیتا) و بعد روی آن متغیر، دستورات رو اجرا کنید. حالا اگر قبلا تصویر رو در یک فایل mat ذخیره کردیم که چیزی تغییر نمیکنه. فقط نیازی به دستور imread نیست. باید ببینیم که تصویر دارای چه فرمتی است.
شما ببینید تصویر در چه متغیری ذخیره شده و سپس دستور im2uint8 را بر روی آن متغیر اجرا کنید. امتحان کنید ببینید جواب میده یا نه. اگر نشد، فایل mat رو پیوست کنید تا بررسی کنم (تنها متغیر مورد نظر را در یک فایل mat ذخیره و سپس پیوست کنید تا حجم فایل زیاد نباشه).
نمی شه تصویر سفید میده همه رو میکنه 255 . دیتا رو گذاشتم لظفا بررسیش کنید
ممنون از وقتی که میذارید
RGB دارای سه channel و CMYK دارای چهار channel می باشد. اما این اطلاعات دارای پنج channel هست.
به شخصی که این اطلاعات رو در اختیارتون قرار داده، رجوع کنید و ازش بپرسید که فرمت تصویر چی بوده که دارای پنج channel هست.
دستور imshow قادر نیست این تصویر را نمایش بدهد، بنابراین متلب فرمت آن را تشخیص نمی دهد.