基于MATLAB的数字图像空间变换及应用
龙源期刊网 http://www.qikan.com.cn
基于MATLAB的数字图像空间变换及应用
作者:赵宇杰 石海丽 王志全
来源:《山东工业技术》2016年第06期
摘 要:数字图像变换是图像处理和分析技术的基础。本文研究数字图像空间变换的基本
原理及其应用,包括用MATLAB实现数字图像的平移、镜像、旋转和缩放变换。
关键词:数字图像;空间变换;MATLAB
DOI:10.16640/j.cnki.37-1222/t.2016.06.122
1 绪论
图像是人们认识世界和获取信息的主要形式。为了有效、快速地对图像进行处理和分析,
往往采用空间变换、傅里叶变换、离散余弦变换等间接处理技术,不仅可减少计算量,而且可
获得更有效地处理。本文阐述了数字图像空间变换的基本原理,并用MATLAB来实现数字图
像的平移、缩放、旋转、镜像变换,使输入图像的像素位置映射到输出图像的新位置。
2 数字图像的空间变换原理及应用
2.1 平移变换原理及应用
图像的平移变换时图像几何变换中最简单、最普遍的空间变换之一,是将一幅图像上的所
有像素点都按给定的偏移量沿x方向和y方向进行移动,如开学时教室里课桌重新摆放等都可
以视为平移运动。若初始坐标为(x0,y0)的点经过平移(tx,ty)(以向右、向下为正方
向)后,坐标变为(x1,y1),且x1=x0+tx,y1= y0+ ty。也可用矩阵形式表示。函数文件为
imtranslateli.m,运行结果如图1所示。
2.2 镜像变换原理及应用
图像的镜像变换不改变图像的形状,分为水平镜像、垂直镜像和对角镜像三种。水平镜像
操作是以图像的垂直中轴线为中心交换图像的左右两个部分;而垂直镜像是以图像的水平中轴
线为中心交换图像的上下两个部分。
设图像的大小为M×N,(i,j)为原图像F(i,j)中像素点的坐标;(i’,j’)为对应像
素点(i,j)水平(垂直、对角)镜像变换后图像H(i’,j’)中的坐标。对于水平镜像,
i’=i,j’=N-j+1;对于垂直镜像,i’=M-i+1,j’=j;对角镜像操作是将图像以图像水平中轴线和
垂直中轴线的交点为中心进行镜像对换,相当于先水平镜像、后垂直镜像,i’=M-i+1,j’=N-
j+1。以水平镜像为例,函数文件为immirrli.m,运行结果如图2所示。
龙源期刊网 http://www.qikan.com.cn
2.3 旋转变换原理及应用
图像旋转是以图像中的某一点为原点按逆时针或顺时针方向旋转一定的角度,是图像的位
置变换,旋转后图像的大小一般会改变。与图像平移变换一样,在图像旋转变换中,可以把转
出显示区域的图像截去,旋转后也可以扩大图像范围以显示所有的图像。
采用不裁掉转出、部分旋转后图像放大的做法,首先需要给出变换矩阵。在坐标系中,将
一个点顺时针旋转角度a,r为该点到原点的距离,b为r与x轴之间的夹角。在旋转过程中,r
保持不变。设旋转前(x0,y0)的坐标分别为x0=rcosb,y0=rcosb。当旋转a角度后,坐标
(x1,y1)的值分别为
x1=r cos(b-a)=r cos b cos a+r sin bsin a=x0cosa+y0sina
y1=r sin(b-a)=r sin b cos a-r cos b sin a=-x0sin a+y0cosa
指令为imrotate,图3所示分别为原图及旋转30度、-45度和60度的效果。
2.4 比例变换原理及应用
数字图像的比例缩放是指给定的图像在x方向和y方向按相同的比例缩放a倍,从而获得
一幅新图像,又称全比例缩放。若x方向和y方向缩放的比例不同,则图像的比例缩放会改变
原始图像像素间的相对位置,产生几何畸变。假设原始图像中的点A0(x0,y0)比例缩放
后,在新图像中的对应点为A1(x1,y1),则x1=ax0,y1=ay0。若a >1,则图像被放大;若
a
3 结论
本文描述了数字图像空间变换的基本原理,通过MATLAB程序实现了在空间域中实现对
数字图像的平移、缩放、镜像及旋转变换,调整图像的位置。优点是改变图像的大小和位置,
进行图像校正、图像匹配、图像变形处理。
参考文献:
[1]孔大力,崔洋.数字图像处理技术的研究现状与发展方向[J].山东水利职业学院院刊,
2012(04):11-14.
[2]赵小川,何灏,缪远诚.MATLAB数字图像处理实践[M].北京:机械工业出版社,
2013:42-75.
[3]杜廷娜.图像空间变换及MATLAB实现[J].鞍山科技大学学报,2007,30(04):369-
376.
龙源期刊网 http://www.qikan.com.cn
[4]陈怀琛,吴大正,高西全.MATLAB就在电子信息课程中的应用[M].北京:电子工业出
版社,2013:81-97.
作者简介:赵宇杰(1983-),女,甘肃景泰人,硕士,副教授,研究方向:电子线路、
通信与信号。
龙源期刊网 http://www.qikan.com.cn
数字图像处理实验一图像FFT 和DCT变换
课程名称数字图像处理与分析实验项目实验一图像FFT 和DCT变换实验地点实验学时实验类型指导教师实验员专业班级学号姓名年月日教师评语一、实验目的及要求1、了解图像变换的意义和手段;2、熟悉傅里叶变换的孩本性质;3、热练掌握FFT方法反变换;4、通过实验了解二维频谱的分布特点;5、通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。
二、实验原理与内容1、应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2、傅立叶(Fourier)变换的定义对于二维信号,二维Fourier变换定义为:二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。
实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
3利用MA TLAB软件实现数字图像傅立叶变换的程序。
三、实验软硬件环境装有MATLAB软件的电脑四、实验过程(实验步骤、记录、数据、分析)1、FFT实验代码:I=imread('11.jpg'); f=I(:,:,1);imshow(f,'InitialMagnification','fit'); %确定像素值的显示范围title('yuantu');F=fft2(f); %二维傅立叶变换F1=fft2(f,256,256);%补零操作的二维傅立叶变换F2=log(abs(F1));%对F1的幅值取对数figure,subplot(1,2,1),imshow(F1,[-1 5],'InitialMagnification','fit'); colormap(jet); title('ftttu256*256'); subplot(1,2,2),imshow(F2,[-1 5],'InitialMagnification','fit'); colormap(jet); title('logabsffttu');figure,imshow(ifft2(F),[ ],'InitialMagnification','fit'); title('iffttu');figure,imshow(ifft2(F1),[ ],'InitialMagnification','fit'); title('iffttu256*256');运行结果:分析:fit的设置把原图以灰度图像输出,由原图和FFT 变换图对比可知,变换之后,灰度变低。
数字图像处理及matlab实现源代码【1】
% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*%{% (一)图像文件的读/写A=imread('drum.jpg'); % 读入图像imshow(A); % 显示图像imwrite(A,'drum.jpg');info=imfinfo('drum.jpg') % 查询图像文件信息% 用colorbar函数将颜色条添加到坐标轴对象中RGB=imread('drum.jpg');I=rgb2gray(RGB); % 把RGB图像转换成灰度图像h=[1 2 1;0 0 0;-1 -2 -1];I2=filter2(h,I);imshow(I2,[]);colorbar('vert') % 将颜色条添加到坐标轴对象中% wrap函数将图像作为纹理进行映射A=imread('4.jpg');imshow(A);I=rgb2gray(RGB);[x,y,z]=sphere;warp(x,y,z,I); % 用warp函数将图像作为纹理进行映射%}% subimage函数实现一个图形窗口中显示多幅图像RGB=imread('drum.jpg');I=rgb2gray(RGB);subplot(1,2,1);subimage(RGB); % subimage函数实现一个图形窗口中显示多幅图像subplot(1,2,2),subimage(I);% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-*% (二)图像处理的基本操作% ----------------图像代数运算------------------%{% imadd函数实现两幅图像的相加或给一幅图像加上一个常数% 给图像每个像素都增加亮度I=imread('4.jpg');J=imadd(I,100); % 给图像增加亮度subplot(1,2,1),imshow(I);title('原图');subplot(1,2,2),imshow(J);title('增加亮度图');%% imsubtract函数实现将一幅图像从另一个图像中减去或减去一个常数I=imread('drum.jpg');J=imsubtract(I,100); % 给图像减去亮度subplot(1,2,1),imshow(I);%% immultiply实现两幅图像的相乘或者一幅图像的亮度缩放I=imread('drum.jpg');J=immultiply(I,2); % 进行亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imdivide函数实现两幅图像的除法或一幅图像的亮度缩放I=imread('4.jpg');J=imdivide(I,0.5); % 图像的亮度缩放subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像的空间域操作------------------%{% imresize函数实现图像的缩放J=imread('4.jpg');subplot(1,2,1),imshow(J);title('原图');X1=imresize(J,0.2); % 对图像进行缩放subplot(1,2,2),imshow(X1);title('缩放图');%% imrotate函数实现图像的旋转I=imread('drum.jpg');J=imrotate(I,50,'bilinear'); % 对图像进行旋转subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% imcrop函数实现图像的剪切I=imread('drum.jpg');I2=imcrop(I,[1 100 130 112]); % 对图像进行剪切subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(I2);%}% ----------------特定区域处理------------------%{% roipoly函数用于选择图像中的多边形区域I=imread('4.jpg');c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(BW);%% roicolor函数式对RGB图像和灰度图像实现按灰度或亮度值选择区域进行处理a=imread('4.jpg');subplot(2,2,1),imshow(a);I=rgb2gray(a);BW=roicolor(I,128,225); % 按灰度值选择的区域subplot(2,2,4),imshow(BW);%% ploy2mask 函数转化指定的多边形区域为二值掩模x=[63 186 54 190 63];y=[60 60 209 204 601];bw=poly2mask(x,y,256,256); % 转化指定的多边形区域为二值掩模imshow(bw);hold onplot(x,y,'r','LineWidth',2);hold off%% roifilt2函数实现区域滤波a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];BW=roipoly(I,c,r); % roipoly函数选择图像中的多边形区域h=fspecial('unsharp');J=roifilt2(h,I,BW); % 区域滤波subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%% roifill函数实现对特定区域进行填充a=imread('4.jpg');I=rgb2gray(a);c=[200 250 278 248 199 172];r=[21 21 75 121 121 75];J=roifill(I,c,r); % 对特定区域进行填充subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);%}% ----------------图像变换------------------%{% fft2 和ifft2函数分别是计算二维的快速傅里叶变换和反变换f=zeros(100,100);subplot(1,2,1);imshow(f);f(20:70,40:60)=1;subplot(1,2,2);imshow(f);F=fft2(f); % 计算二维的快速傅里叶变换F2=log(abs(F));% 对幅值对对数figure;subplot(1,2,1),imshow(F),colorbar;subplot(1,2,2),imshow(F2),colorbar;%% fftsshift 函数实现了补零操作和改变图像显示象限f=zeros(100,100);subplot(2,2,1),imshow(f);title('f')f(10:70,40:60)=1;subplot(2,2,2),imshow(f);title('f取后')F=fft2(f,256,256);subplot(2,2,3),imshow(F);title('F')F2=fftshift(F); % 实现补零操作subplot(2,2,4),imshow(F2);title('F2')figure,imshow(log(abs(F2)));title('log(|F2|)')%% dct2 函数采用基于快速傅里叶变换的算法,用于实现较大输入矩阵的离散余弦变换% idct2 函数实现图像的二维逆离散余弦变换RGB=imread('drum.jpg');I=rgb2gray(RGB);J=dct2(I); % 对I进行离散余弦变换imshow(log(abs(J))),title('对原图离散后取对数'),colorbar;J(abs(J)<10)=0;K=idct2(J); % 图像的二维逆离散余弦变换figure,imshow(I),title('原灰度图')figure,imshow(K,[0,255]);title('逆离散变换');%% dctmtx 函数用于实现较小输入矩阵的离散余弦变figure;RGB=imread('4.jpg');I=rgb2gray(RGB);subplot(3,2,1),imshow(I),title('原灰度图');I=im2double(I);subplot(3,2,2),imshow(I),title('取双精度后');T=dctmtx(8); % 离散余弦变换subplot(3,2,3),imshow(I),title('离散余弦变换后');B=blkproc(I,[8,8],'P1*x*P2',T,T');subplot(3,2,4),imshow(B),title('blkproc作用I后的B');mask=[ 1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 ];B2=blkproc(B,[8,8],'P1.*x',mask);subplot(3,2,5),imshow(B2),title('blkproc作用B后的B2');I2=blkproc(B2,[8,8],'P1*x*P2',T',T);subplot(3,2,6),imshow(I2),title('blkproc作用B2后的I2');%% edge函数用于提取图像的边缘RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);imshow(I);figure,imshow(BW);%% radon 函数用来计算指定方向上图像矩阵的投影RGB=imread('4.jpg');I=rgb2gray(RGB);BW=edge(I);theta=0:179;[R,XP]=radon(BW,theta); % 图像矩阵的投影figure,imagesc(theta,XP,R);colormap(hot);xlabel('\theta(degrees)');ylabel('x\prime');title('R_{\theta}(x\prime)');colorbar;%}% ----------------图像增强、分割和编码------------------%{% imhist 函数产生图像的直方图A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);%% histeq 函数用于对图像的直方图均衡化A=imread('4.jpg');B=rgb2gray(A);subplot(2,1,1),imshow(B);subplot(2,1,2),imhist(B);C=histeq(B); % 对图像B进行均衡化figure;subplot(2,1,1),imshow(C);subplot(2,1,2),imhist(C);%% filter2 函数实现均值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=filter2(fspecial('average',3),I)/255; % 3*3的均值滤波K2=filter2(fspecial('average',5),I)/255; % 5*5的均值滤波K3=filter2(fspecial('average',7),I)/255; % 7*7的均值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% wiener2 函数实现Wiener(维纳)滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=wiener2(I,[3,3]); % 3*3 wiener滤波K2=wiener2(I,[5,5]); % 5*5 wiener滤波K3=wiener2(I,[7,7]); % 7*7 wiener滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%% medfilt2 函数实现中值滤波a=imread('4.jpg');I=rgb2gray(a);subplot(2,2,1),imshow(I);K1=medfilt2(I,[3,3]); % 3*3 中值滤波K2=medfilt2(I,[5,5]); % 5*5 中值滤波K3=medfilt2(I,[7,7]); % 7*7 中值滤波subplot(2,2,2),imshow(K1);subplot(2,2,3),imshow(K2);subplot(2,2,4),imshow(K3);%}% ----------------图像模糊及复原------------------%{% deconvwnr 函数:使用维纳滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"'); subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1'); subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');% 进行维纳滤波wnr1=deconvwnr(Blurred1,PSF1); % 维纳滤波wnr2=deconvwnr(Blurred2,PSF2); % 维纳滤波figure;subplot(1,2,1);imshow(wnr1);title('Restored1,True PSF'); subplot(1,2,2);imshow(wnr2);title('Restored2,True PSF');%% deconvreg函数:使用约束最小二乘滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');NP=V*prod(size(I));reg1=deconvreg(BlurredNoisy1,PSF1,NP); % 约束最小二乘滤波reg2=deconvreg(BlurredNoisy2,PSF2,NP); % 约束最小二乘滤波figure;subplot(1,2,1);imshow(reg1);title('Restored1 with NP');subplot(1,2,2);imshow(reg2);title('Restored2 with NP');%% deconvlucy函数:使用Lucy-Richardson滤波器I=imread('qier.jpg');imshow(I);% 对图像进行模糊处理LEN=31;THETA=11;PSF1=fspecial('motion',LEN,THETA); % 运动模糊PSF2=fspecial('gaussian',10,5); % 高斯模糊Blurred1=imfilter(I,PSF1,'circular','conv'); % 得到运动模糊图像Blurred2=imfilter(I,PSF2,'conv'); % 得到高斯噪声模糊图像figure;subplot(1,2,1);imshow(Blurred1);title('Blurred1--"motion"');subplot(1,2,2);imshow(Blurred2);title('Blurred2--"gaussian"');% 对模糊图像加噪声V=0.002;BlurredNoisy1=imnoise(Blurred1,'gaussian',0,V); % 加高斯噪声BlurredNoisy2=imnoise(Blurred2,'gaussian',0,V); % 加高斯噪声figure;subplot(1,2,1);imshow(BlurredNoisy1);title('BlurredNoisy1');subplot(1,2,2);imshow(BlurredNoisy2);title('BlurredNoisy2');luc1=deconvlucy(BlurredNoisy1,PSF1,5); % 使用Lucy-Richardson滤波luc2=deconvlucy(BlurredNoisy1,PSF1,15); % 使用Lucy-Richardson滤波figure;subplot(1,2,1);imshow(luc1);title('Restored Image,NUMIT=5'); subplot(1,2,2);imshow(luc2);title('Restored Image,NUMIT=15');%}% deconvblind 函数:使用盲卷积算法a=imread('4.jpg');I=rgb2gray(a);figure;imshow(I);title('Original Image');PSF=fspecial('motion',13,45); % 运动模糊figure;imshow(PSF);Blurred=imfilter(I,PSF,'circ','conv'); % 得到运动模糊图像figure;imshow(Blurred);title('Blurred Image');INITPSF=ones(size(PSF));[J,P]=deconvblind(Blurred,INITPSF,30); % 使用盲卷积figure;imshow(J);figure;imshow(P,[],'notruesize');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% 对图像进行减采样a=imread('lena.jpg');%subplot(1,4,1);figure;imshow(a);title('原图');b=rgb2gray(a);%subplot(1,4,2);figure;imshow(b);title('原图的灰度图');[wid,hei]=size(b);%---4倍减采样----quartimg=zeros(wid/2+1,hei/2+1);i1=1;j1=1;for i=1:2:widfor j=1:2:heiquartimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,3);figure;imshow(uint8(quartimg));title('4倍减采样')% ---16倍减采样---quanrtimg=zeros(wid/4+1,hei/4+1);i1=1;j1=1;for i=1:4:widfor j=1:4:heiquanrtimg(i1,j1)=b(i,j);j1=j1+1;endi1=i1+1;j1=1;end%subplot(1,4,4);.figure;imshow(uint8(quanrtimg));title('16倍减采样');%}% 图像类型% 将图像转换为256级灰度图像,64级灰度图像,32级灰度图像,8级灰度图像,2级灰度图像a=imread('4.jpg');%figure;subplot(2,3,1);imshow(a);title('原图');b=rgb2gray(a); % 这是256灰度级的图像%figure;subplot(2,3,2);imshow(b);title('原图的灰度图像');[wid,hei]=size(b);img64=zeros(wid,hei);img32=zeros(wid,hei);img8=zeros(wid,hei);img2=zeros(wid,hei);for i=1:widfor j=j:heiimg64(i,j)=floor(b(i,j)/4); % 转化为64灰度级endend%figure;subplot(2,3,3);imshow(uint8(img64),[0,63]);title('64级灰度图像');for i=1:widfor j=1:heiimg32(i,j)=floor(b(i,j)/8);% 转化为32灰度级endend%figure;subplot(2,3,4);imshow(uint8(img32),[0,31]);title('32级灰度图像');for i=1:widfor j=1:heiimg8(i,j)=floor(b(i,j)/32);% 转化为8灰度级endend%figure;subplot(2,3,5);imshow(uint8(img8),[0,7]);title('8级灰度图像');for i=1:widfor j=1:heiimg2(i,j)=floor(b(i,j)/128);% 转化为2灰度级endend%figure;subplot(2,3,6);imshow(uint8(img2),[0,1]);title('2级灰度图像');% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{% ------------------ 图像的点运算------------------I=imread('lena.jpg');figure;subplot(1,3,1);imshow(I);title('原图的灰度图');J=imadjust(I,[0.3;0.6],[0.1;0.9]); % 设置灰度变换的范围subplot(1,3,2);imshow(J);title('线性扩展');I1=double(I); % 将图像转换为double类型I2=I1/255; % 归一化此图像C=2; % 非线性扩展函数的参数K=C*log(1+I2); % 对图像的对数变换subplot(1,3,3);imshow(K);title('非线性扩展');M=255-I;figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4); % 将此图像二值化,阈值为0.4N2=im2bw(I,0.7); % 将此图像二值化,阈值为0.7 subplot(1,3,2);imshow(N1);title('二值化阈值0.4');subplot(1,3,3);imshow(N2);title('二值化阈值0.7');%}%{% ------------------ 图像的代数运算------------------% 将两幅图像进行加法运算I=imread('lena.jpg');I=rgb2gray(I);J=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(I)for j=size(J):size(I)J(i,j)=0;endendI=im2double(I); % 将图像转化为double型J=im2double(J);% imshow(I);figure;imshow(J);K=I+0.3*J; % 将两幅图像相加subplot(1,3,1);imshow(I);title('人物图');subplot(1,3,2);imshow(J);title('背景图');subplot(1,3,3);imshow(K);title('相加后的图');imwrite(K,'i_lena1.jpg');%%% 将两幅图像做减运算,分离背景与原图A=imread('i_lena1.jpg');B=imread('rice.png');% 以下把两幅图转化为大小一样for i=1:size(A)for j=size(B):size(A)B(i,j)=0;endendC=A-0.3*B;a=imread('lena.jpg');subplot(2,2,1);imshow(a);title('原图图');subplot(2,2,2);imshow(A);title('混合图');subplot(2,2,3);imshow(B);title('背景图');subplot(2,2,4);imshow(C);title('分离后的图');%% 设置掩模,需要保留下来的区域,掩模图像的值为1,否则为0 A=imread('drum.jpg');A=rgb2gray(A);A=im2double(A);sizeA=size(A);subplot(1,2,1);imshow(A);title('原图');B=zeros(sizeA(1),sizeA(2)); % 设置模板B(100:400,100:500)=1;K=A.*B; % 两幅图像相乘subplot(1,2,2);imshow(K);title('局部图');%}%{% ------------------ 图像的缩放------------------A=imread('drum.jpg');B1=imresize(A,1.5); % 比例放大1.5杯,默认采用的是最近邻法进行线性插值B2=imresize(A,[420 384]); % 非比例放大到420:384C1=imresize(A,0.7); % 比例缩小0.7倍C2=imresize(A,[150 180]); % 非比例缩小到150:180figure;imshow(B1);title('比例放大图');figure;imshow(B2);title('非比例放大图');figure;imshow(C1);title('比例缩小图');figure;imshow(C2);title('非比例缩小图');% 检测非比例缩放得到的图片是否能还原到原图a=size(A)d=imresize(C2,[a(1),a(2)]);figure;imshow(d);%}% ------------------ 图像的旋转------------------I=imread('drum.jpg');J=imrotate(I,45); % 图像进行逆时针旋转,默认采用最近邻插值法进行插值处理K=imrotate(I,90); % 默认旋转出界的部分不被截出subplot(1,3,1);imshow(I);subplot(1,3,2);imshow(J);subplot(1,3,3);imshow(K);% 检测旋转后的图像是否失真P=imrotate(K,270);figure;imshow(P);。
基于MATLAB的数字图像课程设计-图像频域增强高通滤波器算法设计
基于MATLAB的数字图像课程设计-图像频域增强高通滤波器算法设计目录1 设计任务及目的 (2)1.1 设计任务 (2)1.2 设计目的 (2)2 课程设计相关知识 (3)2.1 数字图像处理简介 (3)2.1.1 数字图像发展概述 (3)2.1.2 数字图像处理内容 (3)2.1.3 数字图像处理技术 (4)2.2 MATLAB简介 (5)2.2.1 MATLAB基本功能 (5)2.2.2 MATLAB产品应用 (6)2.2.3 MATLAB特点 (6)2.2.4 MATLAB系列工具优势 (6)3 图像频域高通滤波原理 (7)3.1 频域滤波增强步骤及流程框图 (7)3.2 傅立叶变换原理 (8)3.3 高通滤波器原理 (9)3.3.1 理想高通滤波 (9)3.3.2 巴特沃斯高通滤波 (9)3.3.3 指数高通滤波 (10)3.3.4 梯形高通滤波 (10)3.3.5 高斯高通滤波 (10)4 MATLAB程序代码 (10)5 仿真结果与分析 (15)5.1 仿真结果 (15)5.2 结果分析 (19)结论 (20)参考文献 (21)图像频域增强算法设计——高通滤波1设计任务及目的1.1设计任务利用所学的数字图像处理技术,建立实现某一个主题处理的系统,利用MATLAB软件系统来实现图像的频域滤波技术,要求:(1)学习和熟悉MATLAB软件的使用方法;(2)熟悉和掌握MATLAB 程序设计过程;(3)利用所学数字图像处理技术知识和MATLAB软件对图像进行高通滤波处理;(4)能对图.jpg、.bmp、.png格式进行打开、保存、另存、退出等一系列功能操作;(5)在程序开发时,必须清楚主要实现函数目的和作用,需要在程序书写时做适当注释说明,理解每一句函数的具体意义和使用范围;(6)比较几种高通滤波器对图像数字化处理效果的异同。
1.2 设计目的本次课程设计的目的在于提高发现问题、分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。
基于MATLAB的图像复原与重建论文设计
前言 (1)1MATLAB的简介 (1)1.1MATLAB的概述 (1)1.2MATLAB的主要功能 (1)1.3MATLAB在图像处理中的应用 (2)2图像复原 (2)2.1 图像复原的基本概念 (2)2.2 图像退化的数学模型 (2)2.3 逆滤波复原 (3)2.4 维纳滤波复原 (4)2.5 使用Lucy-Richardson算法的迭代非线性复原 (6)2.6 盲去卷积 (8)3图像重建 (10)3.1 图像重建的概述 (10)3.2 傅里叶反投影重建 (11)3.3 卷积法重建 (12)3.4 代数重建方法 (15)结论 (16)参考文献 (17)致谢 (18)数字图像处理是将图像信号转换成数字格式,并通过计算机对它们进行处理。
图像复原过程往往是对提高图像质量起着重要的作用的数字图像处理方法。
图像处理中的一个重要的研究分支是图像重建,其意义在于要检测到获得物体的内部结构图像,而不会其造成任何物体上的损伤。
在本文中,先对图像复原与图像重建进行概述,然后介绍几种图像复原技术与图像重建方法。
通过MATLAB实验程序获得实际处理效果。
关键词:图像复原;图像重建;MATLABAbstractDigital image processing is to convert the image signal into a digital format and process them through the computer. Image restoration process is often to improve the image quality, it plays an important role in digital image processing methods. Image reconstruction is an important research branch of image processing, in the sense that the object to be detected to obtain images of internal structures without causing objects any damage. In this article, firstly, it will introduce image restoration and reconstruction principle, and then introduce several image restoration techniques and image reconstruction methods. The finally treatment effect obtained by MATLAB experimental procedures.Key words: image restoration; image reconstruction; MATLAB基于MATLAB的图像复原与重建设计前言随着网络和通信技术的发展,数字图像处理与分析技术已经在科学研究、工业生产、军事技术、医疗卫生、教育等许多领域得到了广泛应用,并产生了巨大的经济效益和社会效益,对推动社会的发展和提高人们生活水平都起到了重要作用[1]。
基于Matlab的图像预处理讲解
基于Matlab的图像预处理算法实现目录第一章绪论 (1)1.1何谓数字图像处理 (1)1.2数字图像处理的特点及其应用 (1)1.2.1 数字图像处理的特点 (1)1.2.2图像预处理的内容 (2)1.2.3 数字图像处理的应用 (3)1.3MATLAB (4)1.3.1 matlab简述 (4)1.3.2 matlab处理图像的特点 (5)第二章数字图像处理的灰度直方图 (6)2.1灰度的定义 (6)2.2直方图定义 (6)2.2.1直方图的典型用途 (6)2.2.2灰度直方图的计算 (7)2.2.3图像直方图实现代码 (7)2.3直方图均衡 (8)2.3.1 直方图均衡原理 (8)2.3.2直方图均衡的实现 (8)第三章图像平滑与图像锐化 (12)3.1图像的平滑 (12)3.1.1领域平均法基础理论 (12)3.1.2算法实现 (13)3.2图像锐化 (15)3.2.1图像锐化的目的和意义 (15)3.2.2图像锐化算法 (16)3.2.3图像锐化的实现代码 (16)第四章图像噪声与噪声的处理 (19)4.1噪声的概念 (19)4.2图像噪声对图像的影响 (19)4.3噪声来源 (19)4.4噪声图像模型及噪声特性 (20)4.4.1 含噪模型 (20)4.4.2 噪声特性 (21)4.5图像二值化 (21)4.5.1理论基础 (21)4.5.2图像二值化的实现代码 (21)4.6二值图像的去噪 (22)4.6.1理论基础 (23)4.6.2二值图像去噪的实现代码 (23)第五章结论 (25)参考文献 (26)第一章绪论1.1何谓数字图像处理数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。
例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。
总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。
基于matlab的图像识别与匹配
基于matlab的图像识别与匹配基于matlab的图像识别与匹配摘要图像的识别与匹配是⽴体视觉的⼀个重要分⽀,该项技术被⼴泛应⽤在航空测绘,星球探测机器⼈导航以及三维重建等领域。
本⽂意在熟练运⽤图像的识别与匹配的⽅法,为此本⽂使⽤⼀个包装袋并对上⾯的数字进⾏识别与匹配。
⾸先在包装袋上提取出来要⽤的数字,然后提取出该数字与包装袋上的特征点,⽤SIFT⽅法对两幅图进⾏识别与匹配,最终得到对应匹配数字的匹配点。
仿真结果表明,该⽅法能够把给定数字与包装袋上的相同数字进⾏识别与匹配,得到了良好的实验结果,基本完成了识别与匹配的任务。
1 研究容图像识别中的模式识别是⼀种从⼤量信息和数据出发,利⽤计算机和数学推理的⽅法对形状、模式、曲线、数字、字符格式和图形⾃动完成识别、评价的过程。
图形辨别是图像识别技术的⼀个重要分⽀,图形辨别指通过对图形的图像采⽤特定算法,从⽽辨别图形或者数字,通过特征点检测,精确定位特征点,通过将模板与图形或数字匹配,根据匹配结果进⾏辨别。
2 研究意义数字图像处理在各个领域都有着⾮常重要的应⽤,随着数字时代的到来,视频领域的数字化也必将到来,视频图像处理技术也将会发⽣⽇新⽉异的变化。
在多媒体技术的各个领域中,视频处理技术占有⾮常重要的地位,被⼴泛的使⽤于农业,智能交通,汽车电⼦,⽹络多媒体通信,实时监控系统等诸多⽅⾯。
因此,现今对技术领域的研究已⽇趋活跃和繁荣。
⽽图像识别也同样有着更重要的作⽤。
3 设计原理3.1 算法选择Harris ⾓点检测器对于图像尺度变化⾮常敏感,这在很⼤程度上限制了它的应⽤围。
对于仅存在平移、旋转以及很⼩尺度变换的图像,基于 Harris 特征点的⽅法都可以得到准确的配准结果,但是对于存在⼤尺度变换的图像,这⼀类⽅法将⽆法保证正确的配准和拼接。
后来,研究⼈员相继提出了具有尺度不变性的特征点检测⽅法,具有仿射不变性的特征点检测⽅法,局部不变性的特征检测⽅法等⼤量的基于不变量技术的特征检测⽅法。
matlab论文
HU BEI WEN LI XUE YUAN 本学年Matlab 论文题目:matlab 环境下的图像处理院别:专业:指导教师:班级:姓名:学号:2012年12月12日摘要:数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。
数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。
数字图像处理技术已经在各个领域上都有了比较广泛的应用。
图像处理的信息量很大,对处理速度的要求也比较高。
MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
本文介绍了MATLAB 语言的特点,基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利用MATLAB图像处理工具箱进行图像处理的方法。
主要论述了利用MATLAB实现图像增强、二值图像分析等图像处理。
关键词:新增功能、图像处理、压缩、色彩增强、灰度变换、滤波、二值分析。
引言:MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
一、新增功能1、桌面在MATLAB Desktop 中,工具条取代了菜单和工具栏,应用程序库收纳了MATLAB 产品系列的应用程序,单一文件应用程序打包为一个MATLAB 应用软件安装程序文件,包含在应用程序库中,重新设计的“帮助”改进了浏览、搜索和筛选功能·MATLAB R2012b 新界面通过点击选项卡来进行浏览,可同时查看多个文档页面,在命令行窗口中键入函数和变量出错时得到建议的更正,Mac 操作系统上的全屏查看模式2、语言和编程Abstract 属性可将MATLAB 类声明为抽象类,尝试创建抽象类的实例时出现的诊断消息得到了改进3、数学airy, psi 和Bessel 函数的性能得到改进,并实现多线程,ddensd 函数通过状态相关延迟可以求解中立型延迟微分方程4、数据导入和导出使用导入工具可从分隔符文本文件和固定宽度文本文件导入数据,使用导入工具以列向量的方式将电子表格中的数字、文本和日期单步导入audioread 和audioinfo 函数可用于读取MP3、MPEG-4 AAC、WAVE 和其他音频文件audiowrite 函数可用于写入MPEG-4 AAC、WAVE 和其他音频文件读写超过 4 GB 的BigTIFF 图像文件使用xlsread 函数在所有平台上读取XLSM、XLTX 和XLTM 文件。
MATLAB在图像处理中的应用(2)
ห้องสมุดไป่ตู้
1引言
MATI。AB是一种基于向量(数组)而不是标量 的高级程序语言,因而MATLAB从本质上提供了 对图像的支持。从图像的数字化过程可以看出,数 字图像实际上就是一组有序的离散数据,使用 MATLAB可以对这些离散数据形成的矩阵进行一 次性的处理。因此,MATLAB是图像处理研究中 快速实现研究新构思的非常有用的工具。MAT— LAB推出了功能强大的适应于图像分析和处理的 工具箱,常用的有图像处理工具箱、小波工具箱及数 字信号处理工具箱。利用如此多的工具,我们可以 方便地从各个方面对图像的性质进行深入的研究。 本文从实际应用的角度介绍了如何利用MATLAB 进行图像的分析和处理。
图像变换技术是图像处理的重要工具,常应用 于图像压缩、滤波、编码和后续的特征抽取或信息分 析过程。MATLAB提供了常用的变换函数,如 filt2()与ifft2()函数分别实现二维快速傅立叶变换 及其逆变换,dot2()与idct2()函数实现离散余弦变 换及其逆变换,Randon(0与iradon()函数实现Ra- don变换与逆Radon变换。 3.5图像的边缘检测与图像分割
边缘检测是一种重要的区域处理方法,边缘是 所要提取目标和背景的分界线,提取出边缘才能将
目标和背景区分开来。MATL蛆中提供了基本的
~些边缘检测函数,如Sobel、Robert、Canny等等。 另外还提供了分水岭(water—shed)分割方法以及
基于区域的一些分割方法。另外还提供了大量的二 值数学形态学的函数,如腐蚀、膨胀、开操作、闭操作
■●I
基于matlab的图像预处理技术研究文献综述
毕业设计文献综述题目: 基于matlab的图像预处理技术研究专业:电子信息工程1前言部分众所周知,MATLAB在数值计算、数据处理、自动控制、图像、信号处理、神经网络 、优化计算 、模糊逻辑 、小波分析等众多领域有着广泛的用途,特别是MATLAB的图像处理和分析工具箱支持索引图像、RGB 图像、灰度图像、二进制图像,并能操作*.bmp、*.jpg、*.tif等多种图像格式文件如。
果能灵活地运用MATLAB提供的图像处理分析函数及工具箱,会大大简化具体的编程工作,充分体现在图像处理和分析中的优越性。
图像就是用各种观测系统观测客观世界获得的且可以直接或间接作用与人眼而产生视觉的实体。
视觉是人类从大自然中获取信息的最主要的手段。
拒统计,在人类获取的信息中,视觉信息约占60%,听觉信息约占20%,其他方式加起来才约占20%。
由此可见,视觉信息对人类非常重要。
同时,图像又是人类获取视觉信息的主要途径,是人类能体验的最重要、最丰富、信息量最大的信息源。
通常,客观事物在空间上都是三维的(3D)的,但是从客观景物获得的图像却是属于二维(2D)平面的。
图像存在方式多种多样,可以是可视的或者非可视的,抽象的或者实际的,适于计算机处理的和不适于计算机处理的。
图像处理它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程 。
图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。
图像处理作为一门学科大约形成于20世纪60年代初期。
早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。
图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
首次获得实际成功应用的是美国喷气推进实验室(JPL)。
他们对航天探测器徘徊者7号在 1964 年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响 ,由计算机成功地绘制出月球表面地图,获得了巨大的成功。
MATLAB工具箱在数字图像处理课程教学中的应用
图像经过二维离散余 弦变换后 , 转换成一个 D T C 系数矩阵 , 经过 再 阈值 和量化消去一些不重要 的数据 , 就能使数据 得到量化 。通过对 量 化数据 的进一步编码和压缩 , 能有效降低存储空间需求 , 有利于文件的 存储 和传输 。
网像分割 、 图像描述和图像分类 与识别等 。 数字图像处理作为一 门学科形成于 2 世纪 6 年代初期 , 0 0 是一 门涉 及诸 多领域 的交叉学 科。近年来 , 图像处 理技术在许 多应用领域受到
广泛重 视并取得 了重 大的开拓性成就 , 如航空航天 、 物医学工程 、 生 工 业检测 、 机器人视觉 、 公安司法 、 制导 、 军事 文化艺术等 , 使图像处理成 为一 门引人 注 目、 前景 远大的新型学 科 。从 7 年代 中期开始 , 0 随着计 算 机技术 和人工智 能 、 维科学研 究的迅 速发展 , 字图像处 理向更 思 数 高、 更深层 次发展。人们 已开 始研究 如何用计算机 系统解释 图像 , 实现 类 似人类 视觉系统 理解外 部世界 , 这被称 为图像理解 或计算 机视觉 。 因此 , 在大学本科 教育来说 , 设相关 课程 , 开 传授有 关数 字图像处理方 面的基 础知识 , 对于大学 生以后 的工作 、 生活或继续深造都有着重要 的 意义。 1MA L . T AB工 具 箱 M T A 是 一款 专为科学 和 工程计算 而设计 的高级 交互 式软件 AL B 包 , a w rs 司于 2 世纪七十年代 后期推 出, 名字 由M tx 由M t o 公 h k O 其 a i 和 r Lb rtr两个单 词组合 而成 , aoa y o 意为 “ 阵实验 室” 矩 。MA L B环境集 成 TA 了图示和精确 的数值计算 , 是一 个可 以完成各种 计算和数据处理 的可 视化的 、 强有力 的工具 , 可广泛应 用于科学计算 、 程应用 、 工 医药 、 金融 等领域 , 同时也是 一个非 常优秀 的教学工具。 MA L B的工具箱 (olo ) TA T obx 实际上是对扩展 M L 应 用的一系 AT AB 列 MA L B函数( M文件 ) 是针对各类学 科问题的求解工具 。随着 TA 即 , MA L B版本 的不断 升级 , TA 它所 包含 的工具 箱的功能也越来越 丰富 , 应 用范 围也越 来越广泛 , 已经 成为各类涉及数值 分析问题 的不可替代 的 r 。 目 , A L B 三十多个工具箱 , 具 前 M TA 有 大致可 以分为两类 : 功能 型 工具箱和领域型工具箱。功能型工具箱 主要用来 扩充 MA L B的符 号 TA 计算功能 、 图形建模仿真功能 、 文字处理功能以及与硬件的实时交互 等 功能 , 能用于多种学科 。而领域型工具箱则具有很强的专业性 , 如控 制 系统工 具箱 ( ot l y e ol x 、 C n o Ss m T o o ) 图像处 理工具箱 ( it r e — r t b D g aPo s il c s i ol x 、 n T o o )财政金融工具箱( i ni o o ) 。 g b Fn c l ol x等 a aT b 在 目前 的本科 课程 中, 数字 图像 处理等课程 具有较强 的理论性 和 实践性 , 部分章节涉及较深的数学知识 , 如傅立叶变换 、 C 变换 、 DT 小波 变换等 。如果 采用传统 的课堂讲 授方式进行教 学 , 学生在学 习过程 中 就会感为了便 于 学生理解和掌握 , 结合 M T A 工具箱 的演示效果进行教学 , AL B 以图形 图 像的形式讲解枯燥难懂的理论和算法 , 就能做到图文并茂 , 有效提高教 育教学质量。 2教 学过 程 : DCT变换 为 例 . 以 图像变换是数字图像处理技 术的重要方法之一 , 通过变换的方法 ,
