2012-02-15 153 views
5

這是我原來的圖像:爲什麼我的圖像在MATLAB中不能正確加載?

enter image description here

但是當我加載它MATLAB和使用就可以了imshow(),這是我看到它:

enter image description here

這是我正在使用的代碼:

I=imread('D:\Matty\pout.gif') 
imshow(I) 
+0

這是奇怪的....也許嘗試'imshow(im2double(I))',或嘗試將圖像轉換爲另一種格式,然後加載'.jpg',...嘗試從matlab保存圖像' imwrite'(用另一個名字),看看它是否被修改。 – Oli 2012-02-15 14:50:39

+0

@Oli轉換圖像似乎解決了它。盧卡斯指出了這個問題。謝謝回覆。如果你回答而不是評論,我會接受你的回答。 – GrowinMan 2012-02-15 16:49:54

回答

3

GIF被索引的格式,每個圖像都可以有自己的顏色表。所以你需要讀取顏色圖和圖像:

[I, Imap] = imread('D:\Matty\pout.gif'); 
imshow(I,Imap) 

我已經測試它在你的圖像上,它工作得很好。我不明白盧卡斯在他的回答中描述的問題。

+0

我不確定,但我也只有一個漂亮的舊版本的Matlab(6.1)目前可用。 – Lucas 2012-02-15 16:53:17

5

忘記我剛纔所說的。它與顏色映射有關。圖像似乎有一個時髦的色彩地圖。一般來說,您應該能夠使用[X, map] = imread(...)來讀取色彩映射表,但是我沒有完全理解數據的一些限制。

我複製的顏色表手動出從一個16進制軟件的原始數據,並保存它作爲gif_colormap.txt

B1 B1 B1 AF AF AF AB AB AB A9 A9 A9 A7 A7 A7 A3 A3 A3 A1 A1 A1 9F 9F 9F 9D 9D 9D 9B 9B 9B 99 99 99 97 97 97 95 95 95 93 93 93 91 91 91 8F 8F 8F 8B 8B 8B 89 89 89 85 85 85 83 83 83 7F 7F 7F 7D 7D 7D 7B 7B 7B 79 79 79 77 77 77 75 75 75 71 71 71 6D 6D 6D 6B 6B 6B 69 69 69 67 67 67 65 65 65 63 63 63 61 61 61 5F 5F 5F 5D 5D 5D 5B 5B 5B 59 59 59 57 57 57 53 53 53 4D 4D 4D 4B 4B 4B E0 E0 E0 DC DC DC DA DA DA D6 D6 D6 D4 D4 D4 D2 D2 D2 D0 D0 D0 CE CE CE CC CC CC CA CA CA C8 C8 C8 C4 C4 C4 C2 C2 C2 C0 C0 C0 BE BE BA BA BA8 B8 B8 B6 B6 B6 B4 B4 B4 B4 B2 B2 B2 B0 B0 B0 AE AE AE AC AC AC AA AA AA A6 A6 A6 A4 A4 A4 A2 A2 A2 A0 A0 A0 9E 9E 9E 9C 9C 9C 9A 9A 9A 96 96 96 94 94 94 92 92 92 90 90 90 8E 8E 8E 8A 8A 8A 88 88 88 86 86 86 84 84 84 82 82 82 80 80 80 7E 7E 7E 7A 7A 7A 78 78 78 74 74 74 72 72 72 70 70 70 6E 6E 6E 6C 6C 6C 6A 6A 6A 66 66 66 62 62 62 5E 5E 5E 56 56 56 54 54 54 52 52 52 50 50 50 4E 4E 4E 4A 4A 4A DF DF DF DD DD DD DD DB DB DB D7 D7 D7 D5 D5 D5 D3 D3 D3 D1 D1 D1 CF CF CF CD CD CD C9 C9 C9 C7 C7 C7 C5 C5 C5 C3 C3 C3 C1 C1 C1 BD BD BD BB BB BB B9 B9 B9 B5 B5 B5 B3 B3 B3

然後,我在新的顏色表讀取和手動設置

fid = fopen('gif_colormap.txt', 'r') 
A = fscanf(fid, '%x '); 
fclose(fid); 
my_map = reshape(A,3,121)' 

im = imread('pout.gif'); 

%colormap has to be between 0 and 1 
my_map = (my_map-min(my_map(:)))/max(my_map(:)); 

imshow(im,[]) 

%set colormap manually 
colormap(my_map); 

result image of pouting girl

+0

現貨。非常感謝你,盧卡斯爵士,這是一個很好的信息:) – GrowinMan 2012-02-15 16:48:23

相關問題