用MATLABA实现简易的JPEG压缩,不包括最后的编码部分,因为编码比较复杂。。。改天再研究
代码如下,分成三个m函数,直接运行JPEGEncodeDecode函数即可:
编解码函数:
function
JPEGEncodeDecode
%UNTITLED7 Summary
of this function goes here
% Detailed
explanation goes here
img=imread('bridge.bmp');
subplot(121);imshow(img);title('原图'); %显示原图
img_ycbcr =
rgb2ycbcr(img); % rgb->yuv
[row,col,~]=size(img_ycbcr); % 取出行列数,~表示3个通道算1列
%对图像进行扩展
row_expand=ceil(row/16)*16; %行数上取整再乘16,及扩展成16的倍数
if
mod(row,16)~=0 %行数不是16的倍数,用最后一行进行扩展
for i=row:row_expand
img_ycbcr(i,:,:)=img_ycbcr(row,:,:);
end
end
col_expand=ceil(col/16)*16; %列数上取整
if
mod(col,16)~=0 %列数不是16的倍数,用最后一列进行扩展
for j=col:col_expa