资源简介
jpeg压缩matlab实现,包含im2jpeg.m,jpeg2im.m,mat2huff.m三个文件。

代码片段和文件信息
function y = im2jpeg(x quality)
%IM2JPEG Compresses an image using a JPEG approximation.
% Y = IM2JPEG(X QUALITY) compresses image X based on 8 x 8 DCT
% transforms coefficient quantization and Huffman symbol
% coding. Input QUALITY determines the amount of information that
% is lost and compression achieved. Y is an encoding structure
% containing fields:
%
% Y.size Size of X
% Y.numblocks Number of 8-by-8 encoded blocks
% Y.quality Quality factor (as percent)
% Y.huffman Huffman encoding structure as returned by
% MAT2HUFF
%
% See also JPEG2IM.
% Copyright 2002-2006 R. C. Gonzalez R. E. Woods & S. L. Eddins
% Digital Image Processing Using MATLAB Prentice-Hall 2004
% $Revision: 1.5 $ $Date: 2006/07/15 20:44:34 $
%
% Revised: 3/20/06 by R.Woods to correct an ‘eob‘ coding problem to
% check the ‘quality‘ input for <= 0 and to fix a warning when
% struct y is created.
error(nargchk(1 2 nargin)); % Check input arguments
if ndims(x) ~= 2 | ~isreal(x) | ~isnumeric(x) | ~isa(x ‘uint8‘)
error(‘The input must be a UINT8 image.‘);
end
if nargin ==2 && quality <= 0
error(‘Input parameter QUALITY must be greater than zero.‘);
end
if nargin < 2
quality = 1; % Default value for quality.
end
m = [16 11 10 16 24 40 51 61 % JPEG normalizing array
12 12 14 19 26 58 60 55 % and zig-zag redordering
14 13 16 24 40 57 69 56 % pattern.
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99] * quality;
order = [1 9 2 3 10 17 25 18 11 4 5 12 19 26 33 ...
41 34 27 20 13 6 7 14 21 28 35 42 49 57 50 ...
43 36 29 22 15 8 16 23 30 37 44 51 58 59 52 ...
45 38 31 24 32 39 46 53 60 61 54 47 40 48 55 ...
62 63 56 64];
[xm xn] = size(x); % Get input size.
x = double(x) - 128; % Level shift input
t = dctmtx(8); % Compute 8 x 8 DCT matrix
% Compute DCTs of 8x8 blocks and quantize the coefficients.
y = blkproc(x [8 8] ‘P1 * x * P2‘ t t‘);
y = blkproc(y [8 8] ‘round(x ./ P1)‘ m);
y = im2col(y [8 8] ‘distinct‘); % Break 8x8 blocks into columns
xb = size(y 2); % Get number of blocks
y = y(order :); % Reorder column elements
eob = max(y(:)) + 1; % Create end-of-block symbol
r = zeros(numel(y) + size(y 2) 1);
count = 0;
for j = 1:xb % Process 1 block (col) at a time
i = max(find(y(: j))); % Find last non-zero element
if isempty(i) % No nonzero block values
i = 0;
end
p = count + 1;
q = p + i;
r(p:q) = [y(1:i j); eob]; % Truncate trailing 0‘s add EOB
count = count + i + 1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2007-12-04 12:46 jpeg\
文件 3259 2006-07-15 17:06 jpeg\im2jpeg.m
文件 2472 2006-07-15 17:06 jpeg\jpeg2im.m
文件 2817 2006-07-15 17:06 jpeg\mat2huff.m
- 上一篇:bp神经网络matlab代码
- 下一篇:pam仿真
相关资源
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
评论
共有 条评论