2012-02-15 24 views
5

Đây là hình ảnh ban đầu của tôi:Tại sao hình ảnh của tôi không tải đúng trong MATLAB?

enter image description here

Nhưng khi tôi tải nó lên trên MATLAB và sử dụng imshow() trên đó, đây là cách tôi nhìn thấy nó:

enter image description here

này là mã tôi đang sử dụng:

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

Đó là lạ .... có thể thử 'imshow (im2double (I))', hoặc cố gắng chuyển đổi hình ảnh sang định dạng khác trước khi tải nó '.jpg', ... cố gắng lưu hình ảnh từ matlab ' imwrite' (với tên khác), và xem nếu nó được sửa đổi. – Oli

+0

@Oli Chuyển đổi hình ảnh dường như giải quyết nó. Và Lucas chỉ ra vấn đề. Cảm ơn vi đa trả lơi. Tôi đã chấp nhận câu trả lời của bạn, bạn đã trả lời thay vì bình luận. – GrowinMan

Trả lời

3

GIF được lập chỉ mục định dạng, và mỗi hình ảnh có thể có bản đồ màu riêng của mình. Vì vậy, bạn cần phải đọc bản đồ màu cùng với hình ảnh:

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

Tôi đã thử nghiệm nó trên hình ảnh của bạn và nó hoạt động rất tốt. tôi không hiểu vấn đề @Lucas được mô tả trong câu trả lời của anh ấy là gì.

+0

Tôi không chắc chắn, nhưng tôi cũng chỉ có một phiên bản khá cũ của Matlab (6.1) có sẵn tại thời điểm này. – Lucas

5

Hãy quên những gì tôi đã nói trước đó. Nó phải làm với bản đồ màu. Hình ảnh dường như có một bản đồ màu sôi nổi. Nói chung, bạn sẽ có thể đọc bản đồ màu với [X, map] = imread(...), nhưng có một số việc cắt bớt dữ liệu mà tôi không hiểu đầy đủ.

tôi sao chép các bản đồ màu bằng tay ra khỏi dữ liệu thô từ một HexEditor và lưu nó như 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 C 2 C C8 C8 C4 C4 C4 C2 C2 C2 C0 C0 C0 B 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 A6 A6 A4 A4 A4 A2 A2 AA0 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 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 C9 C9 C9 C7 C7 C7 C5 C5 C5 C3 C3 C3 C1 C1 C1 BD BD BD BB BB BB B9 B9 B5 B5 B5 B3 B3 B3

Sau đó, tôi đọc trong bản đồ màu mới và đặt nó bằng tay

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

Phát ngay.Cảm ơn bạn rất nhiều Sir Lucas, đó là thông tin tốt đẹp :) – GrowinMan

Các vấn đề liên quan