图像基本运算
- 格式:ppt
- 大小:7.19 MB
- 文档页数:94
数字图像处理_图像基本运算图像基本运算1点运算线性点运算是指输⼊图像的灰度级与输出图像呈线性关系。
s=ar+b(r为输⼊灰度值,s为相应点的输出灰度值)。
当a=1,b=0时,新图像与原图像相同;当a=1,b≠0时,新图像是原图像所有像素的灰度值上移或下移,是整个图像在显⽰时更亮或更暗;当a>1时,新图像对⽐度增加;当a<1时,新图像对⽐度降低;当a<0时,暗区域将变亮,亮区域将变暗,点运算完成了图像求补; ⾮线性点运算是指输⼊与输出为⾮线性关系,常见的⾮线性灰度变换为对数变换和幂次变换,对数变换⼀般形式为:s=clog(1+r)其中c为⼀常数,并假设r≥0.此变换使窄带低灰度输⼊图像映射为宽带输出值,相对的是输出灰度的⾼调整。
1 x=imread('D:/picture/DiaoChan.jpg');2 subplot(2,2,1)3 imshow(x);4 title('原图');5 J=0.3*x+50/255;6 subplot(2,2,2);7 imshow(J);8 title('线性点变换');9 subplot(2,2,3);10 x1=im2double(x);11 H=2*log(1+x1);12 imshow(H)13 title('⾮线性点运算');%对数运算幂次变换⼀般形式:s=cr^γ幂级数γ部分值把窄带暗值映射到宽带输出值下⾯是⾮线性点运算的幂运算1 I=imread('D:/picture/DiaoChan.jpg');2 subplot(2,2,1);3 imshow(I);title('原始图像','fontsize',9);4 subplot(2,2,2);5 imshow(imadjust(I,[],[],0.5));title('Gamma=0.5');7 imshow(imadjust(I,[],[],1));title('Gamma=1');8 subplot(2,2,4);9 imshow(imadjust(I,[],[],1.5));title('Gamma=1.5');2代数运算和逻辑运算加法运算去噪处理1 clear all2 i=imread('lenagray.jpg');3 imshow(i)4 j=imnoise(i,'gaussian',0,0.05);5 [m,n]=size(i);6 k=zeros(m,n);7for l=1:1008 j=imnoise(i,'gaussian',0,0.05);9 j1=im2double(j);10 k=k+j1;11 End12 k=k/100;13 subplot(1,3,1),imshow(i),title('原始图像')14 subplot(1,3,2),imshow(j),title('加噪图像')15 subplot(1,3,3),imshow(k),title(‘求平均后的减法运算提取噪声1 I=imread(‘lena.jpg’);2 J=imnoise (I,‘lena.jpg’,0,0.02);3 K=imsubtract(J,I);4 K1=255-K;5 figure;imshow(I);7 figure;imshow(K1);乘法运算改变图像灰度级1 I=imread('D:/picture/SunShangXiang.jpg')2 I=im2double(I);3 J=immultiply(I,1.2);4 K=immultiply(I,2);5 subplot(1,3,1),imshow(I);subplot(1,3,2),imshow(J);6 subplot(1,3,3);imshow(K);逻辑运算1 A=zeros(128);2 A(40:67,60:100)=1;3 figure(1)4 imshow(A);5 B=zeros(128);6 B(50:80,40:70)=1;7 figure(2)8 imshow(2);9 C=and(A,B);%与10 figure(3);11 imshow(3);12 D=or(A,B);%或13 figure(4);14 imshow(4);15 E=not(A);%⾮16 figure(5);17 imshow(E);3⼏何运算平移运算实现图像的平移1 I=imread('lenagray.jpg');2 subplot(1,2,1);3 imshow(I);4 [M,N]=size(I);g=zeros(M,N);5 a=20;b=20;6for i=1:M7for j=1:N8if((i-a>0)&(i-a<M)&(j-b>0)&(j-b<N)) 9 g(i,j)=I(i-a,j-b);10else11 g(i,j)=0;12 end13 end14 end15 subplot(1,2,2);imshow(uint8(g));⽔平镜像变换1 I=imread('lena.jpg');2 subplot(121);imshow(I);3 [M,N]=size(I);g=zeros(M,N);4for i=1:M5for j=1:N6 g(i,j)=I(i,N-j+1);7 end8 end9 subplot(122);imshow(uint8(g));垂直镜像变换1 I=imread('lena.jpg');2 subplot(121);imshow(I);3 [M,N]=size(I);g=zeros(M,N);4for i=1:M5for j=1:N6 g(i,j)=I(M-i+1,j);7 end8 end9 subplot(122);imshow(uint8(g));图像的旋转1 x=imread('D:/picture/DiaoChan.jpg');2 imshow(x);3 j=imrotate(x,45,'bilinear');4 k=imrotate(x,45,'bilinear','crop');5 subplot(1,3,1),imshow(x);6 title(‘原图')7 subplot(1,3,2),imshow(j);8 title(‘旋转图(显⽰全部)')9 subplot(1,3,3),imshow(k);10 title(‘旋转图(截取局部)')⼏种插值法⽐较1 i=imread('lena.jpg');2 j1=imresize(i,10,'nearest');3 j2=imresize(i,10,'bilinear');4 j3=imresize(i,10,'bicubic');5 subplot(1,4,1),imshow(i);title(‘原始图像')6 subplot(1,4,2),imshow(j1);title(‘最近邻法')7 subplot(1,4,3),imshow(j2);title(‘双线性插值法')8 subplot(1,4,4),imshow(j3);title(‘三次内插法')放缩变换1 x=imread('D:/picture/ZiXia.jpg')2 subplot(2,3,1)3 imshow(x);4 title('原图');5 Large=imresize(x,1.5);6 subplot(2,3,2)7 imshow(Large);8 title('扩⼤为1.5');9 Small=imresize(x,0.1);10 subplot(2,3,3)11 imshow(Small);12 title('缩⼩为0.3');13 subplot(2,3,4)14 df=imresize(x,[600700],'nearest');15 imshow(df)16 title('600*700');17 df1=imresize(x,[300400],'nearest');18 subplot(2,3,5)19 imshow(df1)20 title('300*400');后记:(1)MATLAB基础知识回顾1:crtl+R是对选中的区域注释,ctrl+T是取消注释2:有的代码中点运算如O=a.*I+b/255 ,其中b除以255原因是:灰度数据有两种表式⽅法:⼀种是⽤unit8类型,取值0~255;另⼀种是double类型,取值0~1。
实验一图像基本运算实验目的:1.熟悉Matlab的使用和矩阵运算;2.掌握图片的读写显示;3.熟悉图像的算术运算。
实验内容:1、以下两个矩阵A和B:(1)>>A=[100;110;001]A=100110001>>B=[234;567;8910]B=2345678910 >>plus(A,B)ans=3346778911>>minus(A,B)ans=-1-3-4-4-5-7-8-9-9 >>times(A,B)ans=2005600010 >>mtimes(A,B)ans=23479118910>>rdivide(A,B)ans=0.5000000.20000.16670000.1000>>mrdivide(A,B)Warning:Matrix is singular to working precision. ans=NaN Inf-InfNaN-Inf InfNaN Inf-Inf(2)>>A&Bans=100110001 >>A|Bans=111111111 >>~Aans=011001110 >>~Bans=000000000 (3)>>C=[444;444;444]C=444444444>>B>Cans=000111111(1)计算A+B、A-B、A.*B、A*B、A./B和A/B。
(2)计算A&B、A|B、~A和~B。
(3)判断B中哪些元素值大于4,将其置1,其它点置0。
以上题目先自己简单计算一下,如果Matlab得到的结果和自己算的不一样,分析原因。
2、(1)仿照课本例2.1(a),读入肺部图片lung.bmp,并显示出来。
>>f=imread('W:\学校\大三上学期\图像处理课件和实验软件\实验1\实验1\image\lung.bmp');>>whos fName Size Bytes Classf582x584x31019664uint8arrayGrand total is1019664elements using1019664bytes>>imshow(f)Warning:Image is too big to fit on screen;displaying at75%scale.>In truesize>Resize1at308In truesize at44In imshow at161(2)直接读入chest.tif并显示,效果怎样?如何改进图片效果?动态范围较低>>f=imread('W:\学校\大三上学期\图像处理课件和实验软件\实验1\实验1\image\chest.tif');>>imshow(f)>>imshow(f,[])3、仿照课本例2.5,对一幅图像进行反转,提取图像的一部分和二次取样。
图像的⼏何运算@⽬录图像的⼏何运算是指引起图像⼏何形状发⽣改变的变换。
与点运算不同的是,⼏何运算可以看成是像素在图像内的移动过程,该移动过程可以改变图像中物体对象之间的空间关系。
1.图像的插值图像插值是指利⽤已知邻近像素点的灰度值来产⽣位置像素点的灰度值,以便由原始图像再⽣成具有更⾼分辨率的图像。
插值是在不⽣成新的像素的情况下对原图像的像素重新分布,从⽽改变像素数量的⼀种⽅法。
在图像放⼤过程中,像素也相应的增加,增加的过程就是‘插值’发⽣作⽤的过程,‘’插值程序⾃动选择信息较好的像素作为增加、弥补空⽩像素的空间,⽽并⾮只使⽤近邻的像素,所以在放⼤图像时,图像看上去会⽐较平滑、⼲净。
⽆论使⽤何种插值⽅法,⾸先都需要找到与输出图像像素相对应的输⼊图像点,然后再通过计算该点附近某⼀像素集合的权平均值来指定输出像素的灰度值。
像素的权是根据像素到点的距离来⽽定的,不同插值⽅法的区别就在于考虑的像素集合不同。
最常见的插值⽅法如下:(1)向前映射法:通过输⼊图像像素的位置,计算输出图像对应像素的位置,将该位置像素的灰度值按某种⽅式分配到输出图像相邻的四个像素。
(2)向后映射法:通过输出图像像素位置,计算输⼊图像对应像素的位置,根据输⼊图像相邻四个像素的灰度值计算该位置像素的灰度值。
(3)最近邻插值:表⽰输出像素将被指定为像素点所在位置处的像素值。
(4)双线性插值:表⽰输出像素值是像素2×2邻域内的平均值。
(5)双三次插值:表⽰输出像素值是像素4×4邻域内的权平均值。
在MATLAB中,interp2函数⽤于对图像进⾏插值处理,该函数的调⽤⽅法如下:A=interp2(X,Y,Z,IX,IY):Z为要插值的原始图像,IX和IY为图像的新⾏和新列clear allclose allclcI2=imread('eight.tif');subplot(231)imshow(I2)title('原始图像')Z1=interp2(double(I2),2,'nearest');%最近邻插值法Z1=uint8(Z1);subplot(232)imshow(Z1)title('最近邻插值')Z2=interp2(double(I2),2,'linear');%线性插值法Z2=uint8(Z2);subplot(232)imshow(Z2)title('线性插值法')Z3=interp2(double(I2),2,'spline');%三次样条插值法Z3=uint8(Z3);subplot(234)imshow(Z3);title('三次样条插值');Z4=interp2(double(I2),2,'cubic');%⽴⽅插值法Z4=uint8(Z4);subplot(235);imshow(Z4);title('⽴⽅插值')2.旋转与平移变换旋转变换的表达式为⽤齐次矩阵表⽰为在MATLAB中,使⽤imrotate函数来旋转⼀幅图像,调⽤格式如下:B=imrotate(A,ANGLE,METHOD,BBOX)其中,A是需要旋转的图像;ANGLE是旋转的⾓度,正值为逆时针;METHOD是插值⽅法;BBOX表⽰旋转后的显⽰⽅式。
图像的基本运算图像的基本运算包括以下几类:图像的点运算;图像的代数运算;图像的几何运算;图像的逻辑运算和图像的插值。
下面将依次介绍这几种运算。
一、点运算点运算是指对一幅图像中每个像素点的灰度值进行计算的方法。
点运算通过对图像中每个像素值进行计算,改善图像显示效果的操作,也称对比度增强,对比度拉伸,灰度变换,可以表示为B(x,y)=f(A(x,y))。
这是一种像素的逐点运算,是原始图像与目标图像之间的映射关系,不改变图像像素的空间关系。
可以提高图像的对比度,增加轮廓线等。
可分为:(1)线性点运算:输出灰度级与输入灰度级之间呈线性关系。
(2)非线性点运算:输出灰度级与输入灰度级之间呈非线性关系。
二、代数运算代数运算是指将两幅或多幅图像通过对应像素之间的加、减、乘、除运算得到输出图像的方法。
对于相加和相乘的情形,可能不止有两幅图像参加运算。
如果记A(x,y)和B(x,y)为输入图像,C(x,y)为输出图像。
那么,四种代数运算的数学表达式如下:(1)C(x,y)=A(x,y)+B(x,y)加法运算可以实现以下两个目的:1.1去除叠加性随机噪声;1.2生成图像叠加效果。
(2)C(x,y)=A(x,y)-B(x,y)减法运算可以实现以下两个目的:2.1消除背景影响;2.2检查同一场景两幅图像之间的变化。
(3)C(x,y)=A(x,y)*B(x,y)乘法运算可以实现以下两个目的:3.1图像的局部显示;3.2图像的局部增强。
(4)C(x,y)=A(x,y)/B(x,y)乘法运算可以实现以下三个目的:4.1遥感图像的处理中;4.2消除图像数字化设备随空间变化的影响。
4.3校正成像设备的非线性影响。
还可以通过适当的组合形成涉及几幅图像的复合代数运算。
三、几何运算几何运算就是改变图像中物体对象(像素)之间的空间关系。
从变换性质来分,几何变换可以分为图像的位置变换(平移、镜像、旋转)、形状变换(放大、缩小)以及图像的复合变换等。
第一章绪论1.模拟图像处理与数字图像处理主要区别表现在哪些方面?(什么是图像?什么是数字图像?什么是灰度图像?模拟图像处理与数字图像处理主要区别表现在哪些方面?)图像:是对客观对象的一种相似性的、生动性的描述或写真。
数字图像:一种空间坐标和灰度均不连续的、用离散数字(一般用整数)表示的图像。
灰度图像:在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。
在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。
模拟图像处理与数字图像处理主要区别:模拟图像处理是利用光学、照相方法对模拟图像的处理。
(优点:速度快,一般为实时处理,理论上讲可达到光的速度,并可同时并行处理。
缺点:精度较差,灵活性差,很难有判断能力和非线性处理能力)数字图像处理(称计算机图像处理,指将图像信号转换成数字格式并利用计算机对数据进行处理的过程)是利用计算机对数字图像进行系列操作,从而达到某种预期目的的技术.(优点:精度高,内容丰富,可进行复杂的非线性处理,灵活的变通能力,一只要改变软件就可以改变处理内容)2.图像处理学包括哪几个层次?各层次间有何区别和联系?数字图像处理可分为三个层次:狭义图像处理、图像分析和图像理解。
狭义图像处理是对输入图像进行某种变换得到输出图像,是一种图像到图像的过程。
图像分析主要是对图像中感兴趣的目标进行检测和测量,从而建立对图像目标的描述,图像分析是一个从图像到数值或符号的过程。
图像理解则是在图像分析的基础上,基于人工智能和认知理论研究图像中各目标的性质和它们之间的相互联系,对图像内容的含义加以理解以及对原来客观场景加以解译,从而指导和规划行动。
区别和联系:狭义图像处理是低层操作,它主要在图像像素级上进行处理,处理的数据量非常大;图像分析则进入了中层,经分割和特征提取,把原来以像素构成的图像转变成比较简洁的、非图像形式的描述;图像理解是高层操作,它是对描述中抽象出来的符号进行推理,其处理过程和方法与人类的思维推理有许多类似之处。
实验四、图像的基本运算1(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9 (2)设置非线性扩展函数的参数c=2(3)采用灰度倒置变换函数s=255-r进行图像变换(4)设置二值化图像的阈值,分别为level=0.4,level=0.7程序如下I=imread('C:\lena8.jpg');figure;subplot(2,3,1);imshow(I);title('原图');J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围subplot(2,3,2);imshow(J);title('线性扩展');I1=double(I); %将图像转换为double类型I2=I1/255; %归一化此图像C=2;K=C*log(1+I2); %求图像的对数变换subplot(2,3,3);imshow(K);title('非线性扩展');M=im2bw(I,0.5);M=~M;%M=255-I; %将此图像取反%Figuresubplot(2,3,4);imshow(M);title('灰度倒置');N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7subplot(2,3,5);imshow(N1);title('二值化阈值0.4');subplot(2,3,6);imshow(N2);title('二值化阈值0.7');2 选取两幅大小一样的灰度图像hough.bmp和rice.bmp,将两幅图像进行加法运算。
程序如下I=imread('C:\hough.bmp');%I=rgb2gray(I);J=imread('C:\rice.bmp');I=im2double(I); %将图像转换成double型J=im2double(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,'C:\lena1.jpg');3 选取一幅混合图像,如相加得到的图像lenal.jpg,将混合图像与背景图像做减法运算。
图像的基本运算图像的基本运算包括以下几类:图像的点运算;图像的代数运算;图像的几何运算;图像的逻辑运算和图像的插值。
下面将依次介绍这几种运算。
一、点运算点运算是指对一幅图像中每个像素点的灰度值进行计算的方法。
点运算通过对图像中每个像素值进行计算,改善图像显示效果的操作,也称对比度增强,对比度拉伸,灰度变换,可以表示为B(x,y)=f(A(x,y))。
这是一种像素的逐点运算,是原始图像与目标图像之间的映射关系,不改变图像像素的空间关系。
可以提高图像的对比度,增加轮廓线等。
可分为:(1)线性点运算:输出灰度级与输入灰度级之间呈线性关系。
(2)非线性点运算:输出灰度级与输入灰度级之间呈非线性关系。
二、代数运算代数运算是指将两幅或多幅图像通过对应像素之间的加、减、乘、除运算得到输出图像的方法。
对于相加和相乘的情形,可能不止有两幅图像参加运算。
如果记A(x,y)和B(x,y)为输入图像,C(x,y)为输出图像。
那么,四种代数运算的数学表达式如下:(1) C(x,y)=A(x,y)+B(x,y)加法运算可以实现以下两个目的:1.1去除叠加性随机噪声;1.2生成图像叠加效果。
(2) C(x,y)=A(x,y)-B(x,y)减法运算可以实现以下两个目的:2.1消除背景影响;2.2检查同一场景两幅图像之间的变化。
(3) C(x,y)=A(x,y)*B(x,y)乘法运算可以实现以下两个目的:3.1图像的局部显示;3.2图像的局部增强。
(4) C(x,y)=A(x,y)/B(x,y)乘法运算可以实现以下三个目的:4.1遥感图像的处理中;4.2消除图像数字化设备随空间变化的影响。
4.3校正成像设备的非线性影响。
还可以通过适当的组合形成涉及几幅图像的复合代数运算。
三、几何运算几何运算就是改变图像中物体对象(像素)之间的空间关系。
从变换性质来分,几何变换可以分为图像的位置变换(平移、镜像、旋转)、形状变换(放大、缩小)以及图像的复合变换等。