Hiện em đang làm đề tài tốt nghiệp đại học có dính dáng một chút đến Matlab và em gặp vấn đề cần nhờ mấp pro giúp đỡ. Công việc chỉ là sử dụng Matlab để nén bức ảnh 640x480 từ 24bit(với mỗi 8bits cho RGB) xuống còn 8bit(với mỗi 3bits cho RG và 2bits cho B) và xuất ra file txt. Nhưng sau khi thực hiện thuật toán nén xong thì file txt có dung lượng lớn hơn file ảnh gốc ban đầu. Em đã kiểm tra khá kỹ thuật toán và không biết vấn đề là chỗ nào. Em đang xài Matlab 2009b. Thank
file ảnh gốc: http://www.mediafire.com/?ba4xjkhrfw6dxag
còn đây là code nén ảnh:
clear all;
img_24 = imread('D:\Dropbox\BGImg.bmp');
figure(1);
imshow(img_24);
img_8_R_double = double(img_24(:,:,1));
img_8_G_double = double(img_24(:,:,2));
img_8_B_double = double(img_24(:,:,3));
img_8_R = fix(img_8_R_double( :,: )/(255/7)+0.5);
img_8_G = fix(img_8_G_double( :,: )/(255/7)+0.5);
img_8_B = fix(img_8_B_double( :,: )/(255/3)+0.5);
img_8_mod = uint8(fix(img_8_R*(2^5) + img_8_G*(2^2)+ img_8_B));
dlmwrite('D:\Dropbox\BGImg.txt', img_8_mod);
file ảnh gốc: http://www.mediafire.com/?ba4xjkhrfw6dxag
còn đây là code nén ảnh:
clear all;
img_24 = imread('D:\Dropbox\BGImg.bmp');
figure(1);
imshow(img_24);
img_8_R_double = double(img_24(:,:,1));
img_8_G_double = double(img_24(:,:,2));
img_8_B_double = double(img_24(:,:,3));
img_8_R = fix(img_8_R_double( :,: )/(255/7)+0.5);
img_8_G = fix(img_8_G_double( :,: )/(255/7)+0.5);
img_8_B = fix(img_8_B_double( :,: )/(255/3)+0.5);
img_8_mod = uint8(fix(img_8_R*(2^5) + img_8_G*(2^2)+ img_8_B));
dlmwrite('D:\Dropbox\BGImg.txt', img_8_mod);