View Full Version : کلاس tiff در متلب
mehrtaban
پنج شنبه 18 شهریور 1395, 17:49 عصر
سلام
من یک تصویر رنگی از نوع double را به کمک کلاس tiff متلب ذخیره کردم ولی بعد که میخوام تصویر را باز کنم هیج برنامه ای این فرمت را نمی شناسد و تصویر را باز نمیکنه به جز برنامه متلب اگر هم تصویر را تبدیل به uint8 کنم پیکسل ها تغییر میکنند راهی هست که بشه بک تصویر double را حالا به هر فرمتی بدون تغییر پیکسل ها ذخیره کرد؟ حتی فرمتی مثل png هم پیکسل ها رو تغییر میده
M.Rahimy
جمعه 19 شهریور 1395, 11:43 صبح
سلام.
شما تصویرتون رو از هر نوع دادهای که در متلب ذخیره کنید در هنگام نمایش توی سیستم عامل به RGB / CMYK / Indexed و غیره تبدیل میشه.
احتمالا قصدتون پردازش دقیق عدد پیکسلها ست (حالا برای هر هدفی: پنهان کردن پسورد، رمزنگاری و غیره) که بعد از ذخیره کردن عدد تغییر میکنه.
این کار رو تست کنید:
ماتریستون رو به uint16 تبدیل کنید و با فرمت png کمپرس نشده ذخیره کنید (که دقت اعداد RGBA توی فشردهسازی از دست نره) بعد دوباره توی متلب لود کنید و به double تبدیل کنید.
mehrtaban
جمعه 19 شهریور 1395, 17:07 عصر
سلام.
شما تصویرتون رو از هر نوع دادهای که در متلب ذخیره کنید در هنگام نمایش توی سیستم عامل به RGB / CMYK / Indexed و غیره تبدیل میشه.
احتمالا قصدتون پردازش دقیق عدد پیکسلها ست (حالا برای هر هدفی: پنهان کردن پسورد، رمزنگاری و غیره) که بعد از ذخیره کردن عدد تغییر میکنه.
این کار رو تست کنید:
ماتریستون رو به uint16 تبدیل کنید و با فرمت png کمپرس نشده ذخیره کنید (که دقت اعداد RGBA توی فشردهسازی از دست نره) بعد دوباره توی متلب لود کنید و به double تبدیل کنید.
ممنون از راهنماییتون ولی باز هم پیکسل ها به اندازه یک واحد کم و زیاد میشن مثلا اگر باید 129 باشه 128 هست نمیدونم کاری که گفتید رو درست انجام دادم یا نه
im=im2uint16(im);
imwrite(im,'rgg.png');
i =imread('rgg.png');
redchannel=im2double(redchannel)*255
M.Rahimy
یک شنبه 21 شهریور 1395, 19:21 عصر
ممنون از راهنماییتون ولی باز هم پیکسل ها به اندازه یک واحد کم و زیاد میشن مثلا اگر باید 129 باشه 128 هست نمیدونم کاری که گفتید رو درست انجام دادم یا نه
im=im2uint16(im);
imwrite(im,'rgg.png');
i =imread('rgg.png');
redchannel=im2double(redchannel)*255
آیا منظور از خط آخر این بوده:
redchannel = im2double( i( :, :, 1) ) * 255
mehrtaban
سه شنبه 30 شهریور 1395, 11:59 صبح
آیا منظور از خط آخر این بوده:
redchannel = im2double( i( :, :, 1) ) * 255
بله منظورم همینه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.