读取索引RGB文件并转换为灰度图像 - 什么是双重,细化和反转图像格式

时间:2014-08-25 10:47:18

标签: matlab image-processing

我正在尝试阅读GIF文件并以下列格式显示 -

Grey Scale
Resized 
Double Image
Thinning
Inverted

以下是我的代码(不完整):

clear all;
close all;
clc;

%Various preprocessing of Images
checkimage=imread('CheckSign/sign.gif');
checkimage_resize=imresize(checkimage,[512, 512]);
checkimage_grey=rgb2gray(checkimage_resize);
[m n p] = size(checkimage_grey)
for i=1:n
    for j=1:m
        if(checkimage_grey(i,j) ~= 0)
            bimage(i,j) = 1;
        else
            bimage(i,j) = 0;
        end
    end
end
subplot (2,3,1),imshow(checkimage),title('Original Image');
subplot (2,3,2),imshow(checkimage_resize),title('Resized Image');
subplot (2,3,3),imshow(checkimage_grey),title('Grey Scale Image');
subplot (2,3,4),imshow(bimage),title('Binary Image');

但我收到以下错误:

Error using rgb2gray>parse_inputs (line 81)
MAP must be a m x 3 array.

Error in rgb2gray (line 35)
X = parse_inputs(varargin{:});

Error in preprocessing (line 8)
checkimage_grey=rgb2gray(checkimage_resize);

在使用imtool查看图像时,我看到一个像素信息:

Pixel (X,Y) index [R,G,B]

<213>
R 0.80 
G 0.80 
B 1.00

现在我不知道如何阅读这种索引文件并转换为灰度级文件?

另外,如何将关注的图像更改为double,thinning和Inverted Imagesformat?

如果我没错,倒置图片为 1 - bimage

1 个答案:

答案 0 :(得分:2)

对于索引图像,您需要读取索引以及colorap

[ind map] = imread( 'CheckSign/sign.gif' );

获得所需信息后,可以使用ind2rgb将索引图转换为RGB图像

checkimage_rgb = ind2rgb( ind, map );

你不需要嵌套for - 循环来“反转”颜色,这就够了

bimage = checkimage_grey ~= 0;
inverted = 1 - bimage;