2015-07-22 2 views
-2

Я пытаюсь преобразовать изображение RGB в изображение Luminance и сохранить его как .raw изображение, чтобы использовать его в другом программном обеспечении. Я использую следующий кодКак преобразовать изображение RGB в изображение Luminance и сохранить изображение в формате .raw в Matlab

m = imread('20x20-alpha1-1.jpg'); 
out = zeros(1942,2588); 
for i=1:1942 
    for j=1:2588 
    out(i,j) = 0.2126*m(i,j,1) + 0.7152*m(i,j,2) + 0.0722*m(i,j,3); 
    end 
end 
fileID = fopen('20x20-alpha1-1.raw'); 
fwrite(fileID,out); 
fclose(fileID); 

Однако, когда я пытаюсь открыть файл с IrfanViewer, файл называется поврежден. Это проблема в моем коде? Если да, то как я могу преобразовать это изображение в образ Luminance и сохранить его? Спасибо :)

+2

Вы просто пишете значения с помощью 'fopen'. Это не действительный формат необработанного изображения. См., Например, [здесь] (https://en.wikipedia.org/wiki/Raw_image_format#File_contents) –

+1

Вы пишете данные необработанного изображения, это что-то еще, чем писать файл .raw. Более поздняя версия содержит дополнительную информацию, такую ​​как разрешение в начале файла. – Daniel

+0

Итак, как можно сохранить одноканальное изображение из Matlab (канал яркости) в файле .raw? –

ответ

0

В этом случае нет необходимости возиться с .raw-файлами. Вместо этого напишите файл tiff:

imwrite(out,'20x20-alpha1-1.tiff','tiff') 
+0

спасибо! это намного проще. Однако есть еще одно изменение: 'out (i, j) = uint8 (0.2126 * m (i, j, 1) + 0.7152 * m (i, j, 2) + 0.0722 * m (i, j, 3)) 'для получения правильного вывода –

+0

@BFMohtedi Вам действительно нужно векторизовать это ... – beaker

Смежные вопросы