内蒙古工业大学数字图像处理.docx
- 文档编号:28012027
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:22
- 大小:1.45MB
内蒙古工业大学数字图像处理.docx
《内蒙古工业大学数字图像处理.docx》由会员分享,可在线阅读,更多相关《内蒙古工业大学数字图像处理.docx(22页珍藏版)》请在冰豆网上搜索。
内蒙古工业大学数字图像处理
学校代码:
10128
学号:
201220203053
数字图像处理课程设计
题目:
数字图像处理及算术编码(或DCT压缩编码)仿真实现
学生姓名:
陈浩
学院:
信息工程学院
系别:
电子信息工程系
专业:
电子信息工程
班级:
电子12-2
指导教师:
吕方黎玉玲
2015年12月28日
数字图像处理课程设计
1、课程设计目的
通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。
通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。
扩展理论知识,培养学生的综合设计能力。
2、课程设计内容
2.1图像处理基本功能
1)数字图像的变换:
普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换。
2)数字图像直方图的统计及绘制等;
2.2图像处理综合功能
1)图像平滑算法程序设计:
2)DCT压缩(保留不同系数),要求显示原图像、压缩后图像的文件大小、压缩比或算术编码压缩
3、课程设计的一般步骤
1)选题与搜集资料:
选择课题,进行系统调查,搜集资料。
2)分析与设计:
根据搜集的资料,进行功能分析,并对系统功能与模块划分等设计。
3)程序设计:
运用掌握的语言,编写程序,实现所设计的功能。
4)调试与测试:
自行调试程序,同学之间交叉测试程序,并记录测试情况。
5)验收与评分:
指导教师对每个成员开发的程序进行综合验收,结合设计报告,根据课程设计成绩的评定方法,评出成绩。
1.普通傅里叶变换(ft)与逆变换(ift)
傅里叶变换是一个非常复杂的理论,我们在图像处理中集中关注于其傅里叶离散变换离散傅立叶变换(DiscreteFourierTransform)。
图象是由灰度(RGB)组成的二维离散数据矩阵,则对它进行傅立叶变换是离散的傅立叶变换。
对图像数据f(x,y)(x=0,1,…,M-1;y=0,1,…,N-1)。
则其离散傅立叶变换定义可表示为:
式中,u=0,1,…,M-1;v=0,1,…,N-1
其逆变换为
式中,x=0,1,…,M-1;y=0,1,…,N-1
程序如下:
t=imread('D:
\chenhao.jpg');
t=rgb2gray(t);
figure,subplot(2,1,1)
imshow(t);
title('原灰度图象');
[m,n]=size(t);
M=zeros(m,m);
N=zeros(n,n);
fori=1:
m
fork=1:
m
M(i,k)=exp(2*pi*i*k*(-j)/m);
end
end
fork=1:
n
fori=1:
n
N(k,i)=exp(2*pi*i*k*(-j)/n);
end
end
t=double(t);
T=M*t*N;
Ni=N';
Mi=M';
Ti=Mi*T*Ni/(m*n);
subplot(2,2,3),imshow(uint8(T))
title('傅里叶变换频谱');
subplot(2,2,4),imshow(uint8(Ti));
title('傅里叶逆变换图像');
图像如下:
2.快速傅里叶变换(fft)与逆变换(ifft)
可分离性的优点是二维的傅立叶变换或逆变换由两个连续的一维傅立叶变换变换来实现,对于一个影像f(x,y),可以先沿着其每一列求一维傅立叶变换,再对其每一行再求一维变换。
正变换
逆变换
由于二维的傅立叶变换具有可分离性,故只讨论一维快速傅立叶变换。
正变换
逆变换
由于计算机进行运算的时间主要取决于所用的乘法的次数。
按照上式进行一维离散由空间域向频率域傅立叶变换时,对于N个F(u)值,中的每一个都要进行N次运算,运算时间与N2成正比。
程序如下:
I=imread('D:
/chenhao.jpg');
subplot(1,2,1),imshow(I);
title('原始图像');
f=rgb2gray(I);
F1=fft2(f);
subplot(1,2,2),imshow(F1);
title('二维离散傅里叶变换后的频谱');
figure,subplot(2,2,1),imshow(log(abs(F1)+1),[010]);
title('图像的频谱图');
F2=fftshift(F1);
subplot(2,2,2),imshow(log(abs(F2)+1),[010]);
title('中心化的频谱图');
F3=ifft2(F1);
subplot(2,2,3),imshow(uint8(F3));
title('傅立叶逆变换');
subplot(2,2,4),imshow(f);
title('灰度图像');
图像如下:
3.离散余弦变换(DCT)
离散形式
式中,
逆变换
在MATLAB中,采用dct2和idct2分别进行二维DCT变换和二维DCT逆变换。
二维DCT常用于信号和图像处理,典型应用是对静止图像和运动图像进行性能优良的有损数据压缩。
在静止图像编码标准JPEG、运动图像编码标准MJPEG和MPEG等标准中都使用了8*8块的离散余弦变换,并将结果进行量化之后进行熵编码。
DCT具有很强的能量集中在频谱的低频部分的特性,而且当信号具有接近马尔科夫过程(Markovprocesses)的统计特性时,DCT的去相关性接近于具有最优去相关性的K-L变换(Karhunen-Loeve变换)的性能。
另外,改进的离散余弦变换(ModifiedDiscreteCosineTransform,MDCT)对交叠的数据进行DCT,有助于避免由于区块边界所产生的多余数据,被用在高级音频编码(AdvancedAudioCoding,AAC)、OggVorbis、AC—3和MP3音频压缩中。
程序如下:
RGB=imread('D:
/chenhao.jpg');
I=rgb2gray(RGB);
subplot(2,2,1),imshow(RGB);
title('原始图像');
C1=dct2(I);
subplot(2,2,2),imshow(log(abs(C1)),[]),colormap(jet(64)),colorbar
title('图像大部分能量集中在上左角');
C2=fftshift(C1);
subplot(2,2,3),imshow(log(abs(C2))+1,[010]);
title('DCT系数');
C3=idct2(C1);
subplot(2,2,4),imshow(uint8(C3));
title('灰度图像');
图像如下:
4.小波变换
离散形式
式中,
和
分别函数
在轴上的
,
平移量。
逆变换
类似地,可以定义二维离散小波变换逼近,并采用Mallat二维快速算法求解。
与DFT类似,可分离二维小波变换最终可转换为两次一维小波变换。
对图像进行小波变换的MATLAB常用函数有:
①对图像进行一层二维小波分解,常见形式为:
[CA,CH,CV,CD]=dwt2(X,’wname’)
式中,X为图像矩阵;’wname’是使用的小波基函数名称,如可选择双正交样条小波基函数,形式为biorNr.Nd。
②查询使用的小波基函数的信息,使用形式为:
Waveinfo(‘wname’)
式中,小波基名称’wname’可选用’haar’(哈尔小波)、’db’(Daubechies小波)、’bior’(双正交样条小波)等。
例如,在命令行状态下键入wavainfo(‘bior’)进行查询双正交样条小波,可知r表示reconstruction(重建),d表示decomposition(分解),N表示相应FIR滤波器的阶数;CA、CH、CV、CD分别是输入矩阵X小波分解的近似系数矩阵、水平细节系数、垂直细节系数和对角线细节系数。
③对二维小波分解的图像进行各种分量的重构,常见函数形式为:
Y=upcoef2(O,X,’wname’,N)
式中,X是分解后的细节信号,Y是重构的细节信号分量;N表示对矩阵X的系数进行重建的步骤数,即重构的层数,默认值为1。
O是细节信号的类型。
如果O=’a’,则表示对信号的近似系数进行重建;否则,如果O=’h’、’v’或’d’,则分别对水平、垂直或对角线细节进行重建。
④对应上述的一层二维小波变换DWT2函数,进行一层二维小波变换逆变换,常见形式为:
X=idwt2(CA,CH,CV,CD,’wname’)
idwt2函数采用’wname’所指示的小波、已重建的基于近似矩阵CA,以及水平细节CH、垂直细节CV和对角线细节CD计算原图像矩阵X。
⑤对重构的图像进行量化编码,常见函数形式为:
Y=wcodemat(X,NBCODES,OPT,ABSOL)
式中,X为待进行量化编码的矩阵,Y为编码矩阵。
在编码中,把矩阵X中元素绝对值最大的作为NBCODES(整数),绝对值最小的作为1,其他元素依其绝对值的大小在1与NBCODES中排列。
当OPT为’row’时,做行编码;当OPT为’col’时,做列编码;当OPT为’mat’时,做全局编码,即把整个矩阵中元素绝对值最大的元素作为NBCODES,最小的作为1.当ABSOL为0时,该函数返回输入矩阵X的一个编码版本,当ABSOL非0时,返回X的绝对值。
程序如下:
A=imread('jpg.jpg');
B=rgb2gray(A);
[C,S]=wavedec2(B,2,'bior3.7');
cA2=appcoef2(C,S,'bior3.7',2);
cA1=appcoef2(C,S,'bior3.7',1);
[cH1,cV1,cD1]=detcoef2('all',C,S,1);
A1=wrcoef2('a',C,S,'bior3.7',1);
A2=wrcoef2('a',C,S,'bior3.7',1);
H1=wrcoef2('h',C,S,'bior3.7',1);
V1=wrcoef2('v',C,S,'bior3.7',1);
D1=wrcoef2('d',C,S,'bior3.7',1);
C1=[A1,H1;V1,D1];
subplot(221);imshow(uint8(B));title('原图');
subplot(222);imshow(uint8(C1));title('第一次压缩低频和高频分量');
subplot(223);imshow(uint8(A1));title('第一次压缩');
subplot(224);imshow(uint8(A2));title('第二次压缩');
图像如下:
5图像直方图均衡化
程序如下:
Q=imread('chenhao.jpg');
D=rgb2gray(Q);
P=imnoise(D,'gaussian',0.02);
J=histeq(P);
subplot(221),imshow(P),title('加入噪声后');
subplot(222),imshow(J),title('直方图均衡化');
subplot(223),imhist(P,256),title('原图直方图');
subplot(224),imhist(J,256),title('均衡化后');
6图像平滑算法
程序如下:
A=imread('chenhao.jpg');
B=rgb2gray(A);
C=imnoise(B,'salt&pepper',0.02);
D=filter2(fspecial('average',3),C)/255;
subplot(131),imshow(B),title('原图');
subplot(132),imshow(C),title('添加高斯噪声');
subplot(133),imshow(D),title('平滑滤波后');
图像如下:
7.图像锐化算法
程序如下:
ima=imread('chenhao.jpg');
ifisrgb(ima)
ima=rgb2gray(ima);
end
ima=double(ima);
bw1=edge(ima,'sobel');
figure;subplot(121);
imshow(uint8(ima));
title('原始图像');
subplot(122);
imshow(bw1);
title('sobel算子锐化');
bw2=edge(ima,'prewitt');
figure;
subplot(121);
imshow(uint8(ima));
title('原始图像');
subplot(122);
imshow(bw2);
title('prewitt算子锐化');
bw3=edge(ima,'roberts');
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw3);title('roberts算子锐化');
bw4=edge(ima,'log');
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw4);title('log算子锐化');
bw5=edge(ima,'canny');
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw5);title('canny算子锐化');
图像如下:
8.DCT压缩
程序如下:
I=imread('chenhao.jpg');
I=rgb2gray(I);
I=im2double(I);
disp('压缩前图像的大小:
');
whos('I')
T=dctmtx(8);
B=blkproc(I,[88],'P1*x*P2',T,T');
mask=[11111000
11110000
11110000
10000000
00000000
00000000
00000000
00000000];
B2=blkproc(B,[88],'P1.*x',mask);
I2=blkproc(B2,[88],'P1*x*P2',T',T);
subplot(1,2,1);imshow(I,[]);title('原图像');
subplot(1,2,2);imshow(I2,[]);title('压缩后图像');
disp('压缩后的图像大小:
');
whos('I2')
imwrite(I,'y.jpg');imwrite(I2,'c.jpg');
y1=imfinfo('y.jpg');c=imfinfo('c.jpg');
y_size=y1.FileSize
Y_size=c.FileSize
y2=c.FileSize/y1.FileSize
图像如下:
9.心得体会
为期两周的课程设计已经结束了,在这两周中,通过Matlab编程的过程之中,进一步掌握了Matlab的使用,明白了这个软件作为许多应用方向工具的强大之处,通过对一些小错误的改造还认识到了以往自己没有注意到的一些小的细节问题,而且我认识到了课本上所学的东西不付诸实践是不会有成果的,所以在这两周内我认真的做每一个实验,不会的东西都会询问同学,最后将程序写了出来,虽然也借鉴了其他同学的智慧,但是我已经弄懂了程序。
也许我的大学课程就这样匆匆结束了,可是学无止境,在今后的工作和学习中,我要更加严格要求自己,不断提高自我!
10.参考文献
[1]《图像处理》上册章毓晋清华大学出版社
[2]《MATLAB程序设计与应用》刘卫国高等教育出版社
[3]《计算机仿真技术》唐向宏电子工业出版社
学校代码:
10128
学号:
201220203058
数字图像处理课程设计
题目:
数字图像处理及算术编码(或DCT压缩编码)仿真实现
学生姓名:
尹冠燕
学院:
信息工程学院
系别:
电子信息工程系
专业:
电子信息工程
班级:
电子12-2
指导教师:
吕方黎玉玲
2015年12月28日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内蒙古 工业大学 数字图像 处理