数字图像处理课设xx.docx
- 文档编号:28236091
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:7
- 大小:72.02KB
数字图像处理课设xx.docx
《数字图像处理课设xx.docx》由会员分享,可在线阅读,更多相关《数字图像处理课设xx.docx(7页珍藏版)》请在冰豆网上搜索。
数字图像处理课设xx
数字图像处理课设xx
数字图像处理
课程设计报告
题目:
基于图像的DCT编码解码的设计
专业班级:
通信0802
学号:
2008001314
姓名:
吴向禹
基于图像的DCT编码解码的设计
一、设计目的
1.1熟悉和掌握MATLAB程序设计方法
1.2掌握图像DCT的编码解码过程
1.3学习和熟悉MATLAB图像处理工具箱
1.4学会运用MATLAB工具箱对图像进行处理和分析
二、设计环境
WindowXP,MATLAB7.1
三、具体设计:
3.1%编码程序
functiony=jpegencode(x,quality)
error(nargchk(1,2,nargin));
ifnargin<2
quality=1;
end
x=double(x)-128;
[xm,xn]=size(x);
t=dctmtx(8);
y=blkproc(x,[88],'P1*x*P2',t,t');
m=[1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;49647887103121120101;7292959811210010399]*quality;
yy=blkproc(y,[88],'round(x./P1)',m);
y=im2col(yy,[88],'distinct');
xb=size(y,2);
order=[19231017251811451219263341342720136714212835424957504336292215816233037445158595245383124323946536061544740485562635664];
%z型扫描对变换系数重新排列
y=y(order,:
);
eob=max(x(:
))+1;
num=numel(y)+size(y,2);
r=zeros(num,1);
count=0;
forj=1:
xb
i=max(find(y(:
j)));
ifisempty(i)
i=0;
end
p=count+1;
q=p+i;
r(p:
q)=[y(1:
i,j);eob];
count=count+i+1;
end
r((count+1):
end)=[];
r=r+128;
r=uint8(r);
savedatr;
y.size=uint16([xm,xn]);
y.numblocks=uint16(xb);
y.quality=uint16(quality*100);
保存为叫jpegencode的m文件,方便调用。
3.2解码程序
functionx=jpegdecode(y)
error(nargchk(1,1,nargin));
m=[1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;49647887103121120101;7292959811210010399];
order=[19231017251811451219263341342720136714212835424957504336292215816233037445158595245383124323946536061544740485562635664];
rev=order;
fork=1:
length(order)
rev(k)=find(order==k);
end
m=double(y.quality)/100*m;
xb=double(y.numblocks);
sz=double(y.size);
xn=sz
(1);
xm=sz
(2);
%x=imread('rice.png');
loaddatr;
x=r;
x=double(x)-128;
eob=max(x(:
));
z=zeros(64,xb);k=1;
forj=1:
xb
fori=1:
64
ifx(k)==eob
k=k+1;break;
else
z(i,j)=x(k);
k=k+1;
end
end
end
z=z(rev,:
);
x=col2im(z,[88],[xmxn],'distinct');
x=blkproc(x,[88],'x.*P1',m);
t=dctmtx(8);
x=blkproc(x,[88],'P1*x*P2',t',t);
这里为编码程序,保存为函数jpegdecode的m文件方便调用。
3.3%%%压缩率%%%%
functioncr=imageratio(f1,f2)
error(nargchk(2,2,nargin));
cr=bytes(f1)/bytes(f2);
保存为函数imageratio的m文件
3.4%%%%bytes%%%%%%
functionb=bytes(f)
ifischar(f)
info=dir(f);
b=info.bytes;
elseifisstruct(f)
b=0;
fields=fieldnames(f);
fork=1:
length(fields)
b=b+bytes(f.(fields{k}));
end
else
info=whos('f');
b=info.bytes;
end
3.5%%%示例程序%%%%
clearall
x=imread('rice.png');
subplot(121);imshow(x);
y=jpegencode(x,5);
loaddatr;
X=jpegdecode(y);
subplot(122);imshow(X);
e=double(x)-double(X);
[m,n]=size(e);
erms=sqrt(sum(e(:
).^2)/(m*n))
cr=imageratio(x,y)
五、实验结果
cr=8192
六、设计心得
数字图像处理是电子信息工程专业的一门基础课,它是集光学、数学、计算机科学等多门学科为一体化的综合性学科。
因数字图像处理在科学研究、工农业生产、军事、公安、医疗卫生、教育等领域都具有广泛的应用,所以近来有了长足的发展。
本设计旨在设计一GUI界面,用户可以通过该界面对图像进行操作。
MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。
它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。
根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。
MATLAB中集成了功能强大的图像处理工具箱。
由于MATLAB语言的语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。
而它的GUI是一个人机交互界面,在现实中有广泛的应用。
本次设计使我的知识面有了很大的提高,专业知识有了进一步的强化,对GUI程序设计有了较深入的认识。
由于对知识掌握的不够牢固、全面,在设计中遇到了挺多问题,通过查找资料和同学的帮助,总体设计还算好,不过因为时间比较仓促,所以设计的GUI界面功能不是很全面,还有很多瑕疵,这也为我进一步学习这方面知识提供了帮助。
参考文献:
[1].林福宗.多媒体技术基础(第2版)课程设计与学习指导[M].北京:
清华大学出版社,2006
[2].姚敏.数字图像处理[M].北京:
机械工业出版社,2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 xx