2013-11-13 1 views
0

У меня есть изображение grayscale, которое я преобразовал в binary. Но, когда я не вижу binary, То есть изображение с двумя значениями (например, 0,1), почему?Преобразует изображение в оттенках серого в двоичное, но при записи изображения я не получаю двоичное изображение

ответ

1

Согласно документу imwrite «s:

If the input array is of class double, and the image is a grayscale 
or RGB color image, IMWRITE assumes the dynamic range is [0,1] and 
automatically scales the data by 255 before writing it to the file as 
8-bit values. 

Это может быть проблемой.

+0

Есть ли какое-нибудь обходное решение, чтобы оно было написано как двоичное? – Simplicity

+0

Из документа я бы догадался, что кастинг как «логичный» должен быть трюк. Проверьте http://www.mathworks.nl/help/matlab/ref/imwrite.html Обратите внимание, что с помощью 'im2bw' вы должны уже получить логический образ напрямую. –

0

хорошо давайте посмотрим, как превратить изображение в BW и сохранить его, я надеюсь, что вы можете найти недостающие точки:

первого чтения изображения:

im = imread('img_name.jpg'); 

второго преобразования его в BW:

bw = im2bw(im, graythresh(im)); 

третий сохранить:

imwrite(bw, 'binary_image_name.jpg', 'jpg'); 

Я думаю, вы пропустили формат изображения во втором аргументе функции «imwrite» ('binary_image_name.jpg')

+0

Я сделал, как вы упомянули, но не получил ожидаемого результата – Simplicity

+0

ну, я снова проверил его с другим изображением, и он работает! поэтому я думаю, вы можете пропустить sth до конверсии! PLZ, объясните больше о том, что вы делаете? –