2012-02-15 7 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

+0

@Oli画像を変換してみたようです。ルーカスはこの問題を指摘した。返信いただきありがとうございます。私はあなたの答えを受け入れるだろうと答えたのではなく、コメントしています。 – GrowinMan

答えて

3

GIFそれを設定し、各画像は、独自のカラーマップを持つことができます。だから、画像と共にカラーマップを読み込む必要があります。

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

私はあなたのイメージでそれをテストしてみた、それは非常によく動作します。私は彼の答えで@Lucasが説明した問題が何だったのか分かりません。

+0

私は確信が持てませんが、私はMatlab(6.1)のかなり古いバージョンしか利用できません。 – Lucas

5

前に言ったことを忘れてしまいます。カラーマップと関係があります。画像にはファンキーなカラーマップがあるようです。一般的には[X, map] = imread(...)でカラーマップを読むことができるはずですが、私が完全に理解していないデータの切り抜きがあります。

Iがバイナリエディタからの生データのうち、手動でカラーマップをコピーし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 93 93 93 91 91 91 8F 8F 8F 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 71 71 71 6D 6D 6D 6B 6B 6B 69 69 69 67 67 67 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 CE CE CC CC CC CA CA C8 C8 C8 C4 C4 C4 C2 C2 C2 C0 C0 BE BE BA BA BA B8 B8 B8 B6 B6 B6 B4 B4 B4 B2 B2 B2 B0 B0 B0 AE AE AE AC AC AC AA AA AA AA A6 A6 A6 A4 A4 A4 A2 A2 A2 A0 A0 A0 A0 9E 9E 9E 9C 9C 9C 9A 9A 9A 96 96 96 94 94 92 92 92 90 90 90 8E 8E 8E、8A、8A、8A、88、88、86、 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 DB DB DB D7 D7 D7 D5 D5 D5 D3 D3 D3 D1 D1 D1 CF CF CF CD CD CD CD C9 C9 C9 C7 C7 C7 C5 C5 C5 C3 C3 C3 C1 C1 C1 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

スポットがあります。素敵な情報だったLucasさん、ありがとうございました:) – GrowinMan

関連する問題