图像处理matlab源码加实验报告

合集下载

matlab图象处理实验报告

matlab图象处理实验报告

对图像lena.bmp 添加高斯噪声,并分别进行均值滤波和中值滤波。

程序:I=imread('d:\lena.bmp');subplot(2,2,1),imshow(I)title('原始图像')I=imnoise(I,'gaussian',0,0.02); % 添加均值为0,方差为0.02的高斯噪声 subplot(2,2,2),imshow(I)title('加噪图像')h=[1 1 1;1 1 1;1 1 1];h=h/9; % 产生3×3的均值滤波模板 J1=filter2(h,I,'same'); % 用均值模板对图像I 滤波 subplot(2,2,3),imshow(J1,[])%subplot(2,2,3),imshow(J1/255)%J1=uint8(J1);subplot(2,2,3),imshow(J1)title('均值滤波结果')J2=medfilt2(I); % 用3×3的滤波窗口对图像I 进行中值滤波 subplot(2,2,4),imshow(J2)title('中值滤波结果')结果:加噪图像中值滤波结果原始图像均值滤波结果I=imread('d:\lena.bmp');subplot(2,2,1),imshow(I)title('原始图像')hx=[-1 -2 -1;0 0 0;1 2 1]; % 生成Sobel 垂直梯度模板 hy=hx'; % 生成Sobel 水平梯度模板 gradx=filter2(hx,I,'same');gradx=abs(gradx); % 计算图像的Sobel 垂直梯度 subplot(2,2,2),imshow(gradx,[])title('图像的Sobel 垂直梯度')grady=filter2(hy,I,'same');grady=abs(grady);% 计算图像的Sobel 水平梯度 subplot(2,2,3),imshow(grady,[])title('图像的Sobel 水平梯度')grad=gradx+grady;% 得到图像的Sobel 梯度subplot(2,2,4),imshow(grad,[])title('图像的Sobel 梯度')结果:图像的Sobel 垂直梯度图像的Sobel 梯度原始图像图像的Sobel 水平梯度。

matlab 数字图像处理实验报告(五份)

matlab 数字图像处理实验报告(五份)

《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。

二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。

从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。

其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。

此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。

频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。

常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。

假定原图像为f(x,y),经傅立叶变换为F(u,v)。

频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。

四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。

matlab图像处理实验报告

matlab图像处理实验报告

matlab图像处理实验报告《Matlab图像处理实验报告》摘要:本实验报告通过使用Matlab软件进行图像处理实验,对图像进行了灰度化、二值化、边缘检测、图像增强等处理,通过实验结果分析,验证了Matlab在图像处理领域的实用性和有效性。

1. 实验目的本实验旨在通过Matlab软件进行图像处理实验,掌握图像处理的基本方法和技术,提高对图像处理算法的理解和应用能力。

2. 实验原理图像处理是对图像进行数字化处理的过程,主要包括图像获取、图像预处理、图像增强、图像分割和图像识别等步骤。

Matlab是一种功能强大的科学计算软件,具有丰富的图像处理工具箱,可用于图像的处理、分析和识别。

3. 实验内容(1)图像灰度化首先,通过Matlab读取一幅彩色图像,并将其转换为灰度图像。

利用Matlab 中的rgb2gray函数,将RGB图像转换为灰度图像,实现图像的灰度化处理。

(2)图像二值化接着,对灰度图像进行二值化处理,将图像转换为黑白二值图像。

利用Matlab 中的im2bw函数,根据设定的阈值对灰度图像进行二值化处理,实现图像的二值化处理。

(3)边缘检测然后,对二值图像进行边缘检测处理,提取图像的边缘信息。

利用Matlab中的edge函数,对二值图像进行边缘检测处理,实现图像的边缘检测处理。

(4)图像增强最后,对原始图像进行图像增强处理,改善图像的质量和清晰度。

利用Matlab 中的imadjust函数,对原始图像进行图像增强处理,实现图像的增强处理。

4. 实验结果分析通过实验结果分析,可以发现Matlab在图像处理领域具有较高的实用性和有效性。

通过Matlab软件进行图像处理实验,可以快速、方便地实现图像的处理和分析,提高图像处理的效率和精度,为图像处理技术的研究和应用提供了重要的工具和支持。

5. 结论本实验通过Matlab图像处理实验,掌握了图像处理的基本方法和技术,提高了对图像处理算法的理解和应用能力。

数字图像处理matlab版实验报告

数字图像处理matlab版实验报告

数字图像处理实验报告(matlab版)一.实验目的:熟悉数字图像处理中各种椒盐噪声的实质,明确各种滤波算法的的原理。

进一步熟悉matlab的编程环境,熟悉各种滤波算法对应的matlab函数。

实验结果给以数字图像处理课程各种算法处理效果一个更直观的印象。

二.实验原理:1.IPT(图像处理工具箱)基本函数介绍1. imread函数该函数用于从图形文件中读出图像。

格式A=IMRAED(FILENAME,FMT)。

该函数把FILENAME 中的图像读到A中。

若文件包含一个灰度图,则为二维矩阵。

若文件包含一个真彩图(RGB),则A为一三维矩阵。

FILENAME指明文件,FMT指明文件格式。

格式[X,MAP]=IMREAD(FILENAME,FMT).把FILENAME中的索引图读入X,其相应的调色板读到MAP中.图像文件中的调色板会被自动在范围[0,1]内重新调节。

FMT的可能取值为jpg 或jpeg,tif或tiff,bmp,png,hdf,pcx,xwd。

2.imwrite函数该函数用于把图像写入图形文件中。

格式IMWRITE(A,FILENAME,FMT)把图像A写入文件FILENAME中。

FILENAME指明文件名, FMT指明文件格式。

A既可以是一个灰度图,也可以是一个真彩图像。

格式IMWRITE(X,MAP,FILENAME,FMT)把索引图及其调色板写入FILENAME中。

MAP必须为合法的MATLAB调色板,大多数图像格式不支持多于256色的调色板。

FMT的可能取值为tif或tiff,jpg或jpeg,bmp,png,hdf,pcx,xwd。

3. imshow函数显示图像。

格式IMSHOW(I,N).用N级离散灰度级显示灰度图象I。

若省略N,默认用256级灰度显示24位图像,64级灰度显示其他系统。

格式IMSHOW(I,[LOW HIGH]),把I 作为灰度图显示。

LOW值指定为黑色,HIGH指定为白色,中间为按比例分布的灰色。

matlab实验报告

matlab实验报告

Matlab实验报告实验二图像处理一、实验目的(1)通过应用MA TLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用;(2)通过实验进一步掌握图像处理的基本技术和方法。

二、实验内容及代码㈠.应用MA TLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换首先,在matlab页面中的current directory下打开存放图像的文件夹。

1.显示各种图像⑴显示彩色图像:①代码:>> mousetif=imread('tif.TIF');>> image(mousetif)显示截图:②代码:>> mousetif=imread('tif.TIF');>> imshow(mousetif)显示截图:③代码:mousetif=imread('tif.TIF');subimage(mousetif)显示截图:显示截图:⑵显示二值图像①代码:>> I=imread('单色bmp.bmp');>> imagesc(I,[0 2])显示截图:②代码:>> I=imread('单色bmp.bmp');>> imshow(I,2)显示截图:③代码:>> I=imread('单色bmp.bmp');>> subimage(I)显示截图:⑶显示灰度图像①代码:>> I1=imread('256bmp.bmp');>> imagesc(I1,[0,256])显示截图:代码:>> I1=imread('256bmp.bmp');>> colormap(gray);>> subplot(1,2,1);>> imagesc(I1,[0,256]);>> title('灰度级为[0 256]的mouse.bmp图');>> subplot(1,2,2);>> imagesc(I1,[0,64]);>> colormap(gray);>> title('灰度级为[0 64]的mouse.bmp图');显示截图:⑷显示索引图像代码:>> mousetif=imread('tif.TIF');>> [x,map]=rgb2ind(mousetif,0.7);>> subplot(1,2,1);>> imshow(mousetif);>> title('彩色图像');>> subplot(1,2,2);>> imshow(x,map);>> title('索引图');截图显示:彩色图像索引图2.图像之间的转换⑴索引图像转灰度图像代码:>> II1=ind2gray(x,map);>> imshow(x,map);>> title('索引图像');>> imshow(II1);>> title('灰度图像');截图显示:索引图像灰度图像⑵ 索引图像转彩色图像⑶ 索引图像转二值图像⑷ 灰度图像转索引图像代码:>> I1=imread('256bmp.bmp');>> subplot(1,2,1);>> imagesc(I1,[0,256]); >> colormap(gray); >> title('灰度图');>> [x,map]=gray2ind(I1,256); >> subplot(1,2,2); >> image(x);>> colormap(map); >> title('索引图');显示截图:灰度图2004006008001000100200300400500600索引图2004006008001000100200300400500600⑸灰度图像转彩色图像⑹灰度图像转二值图像⑺彩色图像转灰度图像⑻彩色图像转索引图像代码:>> mousetif=imread('tif.TIF');>> [x,map]=rgb2ind(mousetif,0.7);>> subplot(1,2,1);>> imshow(mousetif);>> title('彩色图像');>> subplot(1,2,2);>> imshow(x,map);>> title('索引图');显示截图:彩色图像索引图⑼彩色图像转二值图像⑽二值图像转索引图像⑾二值图像转彩色图像⑿二值图像转灰度图像㈡应用MA TLAB工具箱演示一幅图像的傅里叶变换、离散余弦变换,观察其频谱图。

MATLAB图像处理实验程序及结果

MATLAB图像处理实验程序及结果

1.建立输入图像,在64⨯64的黑色图像矩阵的中心建立16⨯16的白色矩形图像点阵,形成图像文件。

对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。

clear N=100; f=zeros(64,64);f(24:39,24:39)=1;subplot(1, 2 ,1),imshow(f,'notruesize') title('原始图像') F=fft2(f,N,N)F2=fftshift(abs(F));subplot(1, 2 ,2),x=1:N;y=1:N; mesh(x,y,F2(x,y)); title('傅里叶变换')原始图像100傅里叶变换2.调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上,比较变换结果。

clear N=100; f=zeros(64,64);f(10:25,10:25)=1;subplot(1, 2 ,1),imshow(f,'notruesize') title('原始图像') F=fft2(f,N,N)F2=fftshift(abs(F));subplot(1, 2 ,2),x=1:N;y=1:N; mesh(x,y,F2(x,y)); title('傅里叶变换')原始图像0100傅里叶变换3.调整输入图像中白色矩形的尺寸(40⨯40,4⨯4),再进行变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上,比较变换结果。

clear N=100;f=zeros(64,64); f(12:51,12:51)=1;subplot(1, 2 ,1),imshow(f,'notruesize') title('原始图像') F=fft2(f,N,N)F2=fftshift(abs(F));subplot(1, 2 ,2),x=1:N;y=1:N; mesh(x,y,F2(x,y)); title('傅里叶变换')原始图像100clear N=100; f=zeros(64,64);f(30:33,30:33)=1;subplot(1, 2 ,1),imshow(f,'notruesize') title('原始图像') F=fft2(f,N,N)F2=fftshift(abs(F));subplot(1, 2 ,2),x=1:N;y=1:N; mesh(x,y,F2(x,y)); title('傅里叶变换')原始图像1001.显示图像(cameraman.tif )及灰度直方图。

实验一 MATLAB_图像处理实验报告

实验一 MATLAB_图像处理实验报告实验报告课程名称数字图像处理实验名称图像的几何变换姓名__吴征宇学号____ 3101110002 专业班级_ 实验日期__20XX_ 年_10 _月_18 日成绩_____ __ 指导教师___ _一、实验目的掌握图像平移、缩放、旋转与镜像变换;二、实验原理图像平移,自写平移函数function outImage=immove(inImage,Tx,Ty) [m, n] = size(inImage);%计算图象大小outImage = uint8(zeros(m+abs(Ty), n+abs(Tx))); if(Tx>0&&Ty>0) %往右下角平移的情况outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage; else if(Tx0) %往左下角平移的情况outImage(1+Ty:m+Ty,1:n) = inImage; else % 往右上角平移的情况outImage(1:m,1+Tx:n+Tx) = inImage; end endend 主函数I=imread('C:\\Documents and Settings\\student\\桌面\\'); J=rgb2gray(I);imshow(J);title('原图像'); H=immove(J,100,-100);figure;imshow(H);title('平移后图像'); B=immove(J,80,-50);figure;imshow(B);title('平移后图像'); G=imresize(J,);figure;imshow(G);title('缩放后图像'); C=imresize(J,2);figure;imshow(C);title('缩放后图像'); D=imrotate(J,30);figure;imshow(D);title('旋转后图像'); E=imrotate(J,54);figure;imshow(E);title('旋转后图像'); F = flipdim(J,1);figure;imshow(F);title('垂直镜像图像'); G = flipdim(J,2);figure;imshow(G);title('水平镜像图像');三、实验环境Window 20XX Matlab1.利用imread( )函数读取一幅图像,假设其名为,存入一个数组中;a=imread('')2.利用whos 命令提取该读入图像的基本信息;3.利用imshow 函数来显示这幅图像;4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite 函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

Matlab数字图像处理实验报告

北大数字图像处理实验姓名:wcs365 学号:070106 语法编程如下m=imread('c1.bmp');n=rgb2gray(m); %对图像二值化j=Histeq(n); %直方图均衡化figure,imshow(j);imhist(n); %图像的直方图显示j= imnoise(n,'salt & pepper',0.02); %图像去噪k= medfilt2(J); %中值滤波imshow(j),figure,imshow(k);s=strel('ball',11,90);x=imdilate(n,s); %数学形态学膨胀运算imshow(x);figure,imshow(x);se=strel('disk',11);erodedBW=imerode(n,se); %数学形态学腐蚀运算figure,imshow(erodedBW);se=strel('disk',5);I_opened = imopen(n,se); %数学形态学开运算figure,imshow(I_opened,[]);BW2 = bwmorph(n,'remove'); %二值形态学函数figure,imshow(BW2);F = fft2(n); %图像的二维离散傅里叶变换F2 = log(abs(F));imshow(F2,[-1 5],'notruesize'); colormap(jet); colorbary1 = edge(n,'prewitt'); %图像的边缘检测y2 = edge(n,'canny'); %图像的canny边缘检测imshow(y1);figure, imshow(y2)图1去噪处理图2 二值形态学图3数学形态学腐蚀运算图4图像的二维离散傅里叶变换图5直方图均衡化图6数学形态学开运算图7数学形态学膨胀运算图8 直方图图9 中值滤波图10 边缘检测图11 canny边缘检测。

图像处理报告matlab代码报告

计算机图像处理报告软件版本:MATLAB2012a 64-bit班级:电子1002班学号:20102606姓名:钱振林目录实验一数字图像处理平台 (3)一、实验目的 (3)二、实验内容 (3)三、实验仪器设备 (3)四、实验报告要求 (3)五、注意 (3)六、实验代码和截图 (4)实验二图像处理 (5)一、实验目的 (5)二、实验仪器设备 (5)三、实验报告要求 (5)四、实验内容(代码和截图) (5)第1题 (5)第2题 (7)第3-1题 (8)第3.2题 (9)第3.3题 (11)第3.4题 (12)第4题 (16)第5题 (17)第6题 (18)第7题 (20)附录 (21)实验一数字图像处理平台一、实验目的(1)学会使用扫描仪;(2)熟悉MATLAB软件。

二、实验内容(1)用扫描仪扫一幅彩色图片;一幅灰度图片。

(2)熟悉MATLAB的主界面窗口中各个窗口的功能,利用不同的矩阵输入方式给矩阵赋值,了解MATLAB的简单编程及矩阵基本知识;(3)掌握使用MATLAB的帮助来获得更多的信息。

三、实验仪器设备扫描仪、计算机和MATLAB应用软件。

四、实验报告要求写出所做实验的具体内容,上交编写的程序代码。

五、注意1 、扫描的照片不要过大,可以选择照片的一部分进行扫描,否则图片运算时计算量过大,运行时间过长。

2、在输入MATLAB命令时,符号(逗号、括号等)应为英文格式。

六、实验代码和截图>> im=imread('C:\Users\QIAN\Desktop\1.jpg');>> subplot(2,2,1); imshow(im); title('读取显示图像'); >> g=rgb2gray(im);>> subplot(2,2,2); imshow(g); title('转换成灰度图像'); >> j=255-g;>> subplot(2,2,3); imshow(j); title('灰度图像取反');[M,N]=size(g);for i=1:Mfor j=1:Nif g(i,j)<=30ng(i,j)=g(i,j);elseif g(i,j)<=150ng(i,j)=(200-30)/(150-30)*(g(i,j)-30)+30;elseng(i,j)=(255-200)/(255-150)*(g(i,j)-150)+200;endendendsubplot(1,2,1);imshow(g); title('原始灰度图像'); subplot(1,2,2);imshow(ng); title('拉伸后的图像');实验二图像处理一、实验目的(1)通过应用MATLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件编程及应用;(2)通过实验进一步掌握图像处理的基本技术和方法。

matlab高级编程与应用-图像处理实验报告资料

图像处理实验报告自03 张驰昱2010012028一、基础知识(a)以测试图像的中心为圆心,图像的长和宽中较小值的一半为半径画一个红颜色的圆问题分析:构造一个与原图像大小相同的矩阵并按照要求在矩阵中“画”出形状,然后点乘原图像矩阵就可以了。

新的构造矩阵在需要保留原图像的地方须置为1。

具体实现:load('hall.mat');hall=im2double(hall_color); %把8位无符号整形线性转化为0到1之间的数[xx,yy,~]=size(hall); %得到图像长宽R=min(xx,yy)/2; %设半径R为长宽中的较小值的一半circle=ones(xx,yy); %申请一个与原图像相同大小的1矩阵r=[0:2*pi/400:2*pi]; %一个完整圆周的弧度向量x=floor(xx/2+1+R*cos(r)); %完整圆周的x坐标向量y=floor(yy/2+1+R*sin(r)); %完整圆周的y坐标向量,配合之前x坐标值就是圆周坐标了circle(xx*(y-1)+x)=0; %设圆周上每个坐标点的值为0,至此一个画着黑圆的矩阵构造完成%下面是把这个构造好的矩阵点乘原图像矩阵,再在R层矩阵加上一个“白圆矩阵”就是红圆了hall_color_a(:,:,1)=hall(:,:,1).*circle+~circle;hall_color_a(:,:,2)=hall(:,:,2).*circle;hall_color_a(:,:,3)=hall(:,:,3).*circle;imwrite(hall_color_a,'hall_color_a.jpg','JPEG');代码优化:本题花了我一点脑筋把整个圆周的矩阵坐标构造的两个向量中去,免去了循环,大大提高程序效率,基本是瞬间运行完成。

运行结果:(b)将测试图像涂成国际象棋状的“黑白格”的样子,其中“黑”即黑色,“白”则意味着保留原图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大学2016 —2017 学年第 1 学期数字图像处理课程设计年级与专业学号姓名题目:图像的代数运算目标:1.深入理解图像处理中代数运算的基本作用;2.掌握在MTLAB中对图像进行代数运算的方法;3.通过实验分析比较各种代数运算算法的效果。

课程设计日期:2016年11月11号一、问题背景随着移动设备的日渐普及,在日常的生活我们可以直接采集到清晰的图像,但是在工业或勘测领域,仍存在许多图像需要进行处理,以便人眼或机器进行符合其认知逻辑的观察,进而得出结论或进行下一步的作业。

鉴于工业或勘测我们无法直接参与,本文仅通过最为简单的图像代数运算,结合matlab进行实验,借助处理后的直观结果,对图像处理做一些最基本的研究。

二、实验原理图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。

如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式:C(x,y) = A(x,y) + B(x,y)C(x,y) = A(x,y) - B(x,y)C(x,y) = A(x,y) * B(x,y)C(x,y) = A(x,y) / B(x,y)图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。

例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。

使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。

为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。

下表列举了所有图像处理工具箱中的图像代数运算函数。

表2-1 图像处理工具箱中的代数运算函数能够接受uint8和uint16数据,并返回相同格式的图像结果。

虽然在函数执行过程中元素是以双精度进行计算的,但是MATLAB工作平台并不会将图像转换为双精度类型。

代数运算的结果很容易超出数据类型允许的范围。

例如,uint8数据能够存储的最大数值是255,各种代数运算尤其是乘法运算的结果很容易超过这个数值,有时代数操作(主要是除法运算)也会产生不能用整数描述的分数结果。

图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。

例如,如果数据类型是uint8,那么大于255的结果(包括无穷大inf)将被设置为255。

注意:无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。

三、实验分析1.图像的加法运算图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。

直接采集的图像品质一般都较好,不需要进行加法运算处理,但是对于那些经过长距离模拟通讯方式传送的图像(如卫星图像),这种处理是必不可少的。

在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。

imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。

imadd函数的调用格式如下:Z = imadd(X,Y)其中,X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果。

图像加法在图像处理中应用非常广泛。

例如,以下代码使用加法操作将两幅图像叠加在一起:I=imread('cameraman.tif');J=imread('rice.png');K=imadd(I,J);subplot(2,2,1);imshow(I);subplot(2,2,2);imshow(J);subplot(2,2,3);imshow(K);叠加结果如图1.1所示。

图1.1给图像的每一个像素加上一个常数可以使图像的亮度增加。

例如,以下代码将增加图circuit所示的图像的亮度,加亮后的结果如图1.2所示。

RGB = imread('circuit.tif');RGB2 = imadd(RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2);图1.2两幅图像的像素值相加时产生的结果很可能超过图像数据类型所支持的最大值,尤其对于uint8类型的图像,溢出情况最为常见。

当数据值发生溢出时,imadd函数将数据截取为数据类型所支持的最大值,这种截取效果称之为饱和。

为了避免出现饱和现象,在进行加法计算前最好将图像转换为一种数据范围较宽的数据类型。

例如,在加法操作前将uint8图像转换为uint16类型。

I= imread('cameraman.tif');[L H]=size(I) %获取大小K=zeros(L,H)for i=1:100J=imnoise(I,'gaussian',0,0.02); %加高斯噪声(均值为0,方差为0.02)J1=im2double(J); %转成double型进行相加K=K+J1;endK=K/100;subplot(2,2,1),imshow(I),title('原图像');subplot(2,2,2),imshow(J),title('加噪声后图像');subplot(2,2,3),imshow(K),title('处理后图像');2.图像的减法运算图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。

图像减法可以作为许多图像处理工作的准备步骤。

例如,可以使用图像减法来检测一系列相同场景图像的差异。

图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。

在利用图像减法处理图像时往往需要考虑背景的更新机制,尽量补偿由于天气、光照等因素对图像显示效果造成的影响。

在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。

imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。

imsubtract函数的调用格式如下:Z = imsubtract(X,Y);其中,Z是X-Y操作的结果。

如果希望从图像数据I的每一个像素减去一个常数,可以将上述调用格式中的Y替换为一个指定的常数值,例如:Z = imsubtract(I,50);同上述加法变亮原理类同,此处做变暗处理,如下图:RGB = imread('circuit.tif');RGB2 = imsubtract (RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2);变暗以下代码首先根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成图2.1所示的图像:K1 = imread('cameraman.tif');background = imerode(K1, strel('disk',15)); %图像腐蚀,其中X是待处理的图像,SE是结构元素对象K2 = imsubtract(K1, background);subplot(1,2,1);imshow(K1) ,title('原图像');subplot(1,2,2);imshow(K2), title('圆盘半径15');图2.1改变圆盘半径,生成如图2.2:K1 = imread('cameraman.tif');background = imerode(K1, strel('disk',5)); %图像腐蚀,其中X是待处理的图像,SE是结构元素对象K2 = imsubtract(K1, background);subplot(1,2,1);imshow(K1) ,title('原图像');subplot(1,2,2);imshow(K2), title('圆盘半径5');图2.2减法操作有时会导致某些像素值变为一个负数,对于uint8或uint16类型的数据,如果发生这种情况,那么imsubtract函数自动将这些负数截取为0。

为了避免差值产生负值,同时避免像素值运算结果之间产生差异,可以调用函数imabsdiff。

imabsdiff将计算两幅图像相应像素差值的绝对值,因而返回结果不会产生负数。

该函数的调用格式与imsubtract函数类似。

3. 图像的乘法运算两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。

一幅图像乘以一个常数通常被称为缩放,这是一种常见的图像处理操作。

如果使用的缩放因子大于1,那么将增强图像的亮度,如果因子小于1则会使图像变暗。

缩放通常将产生比简单添加像素偏移量自然得多的明暗效果,这是因为这种操作能够更好地维持图像的相关对比度。

此外,由于时域的卷积或相关运算与频域的乘积运算对应,因此乘法运算有时也被作为一种技巧来实现卷积或相关处理。

在MATLAB中,使用immultiply函数实现两幅图像的乘法。

immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。

immulitply函数的调用格式如下:Z = immulitply(X,Y)其中,Z=X*Y。

例如,以下代码将使用给定的缩放因子对图2.5(a)所示的图像进行缩放,从而得到如图2.5(b)所示的较为明亮的图像:I = imread('moon.tif');J = imdivide (I,1.5);subplot(1,2,1);imshow(I),title('原图');subplot(1,2,2);imshow(J),title('乘1.5');图3.1 原图和乘以因子1.5 的图像I = imread('moon.tif');J = immultiply(I,0.5);subplot(1,2,1);imshow(I),title('原图');subplot(1,2,2);imshow(J),title('乘0.5');图3.2 原图和乘以因子0.5 的图像uint8图像的乘法操作一般都会发生溢出现象。

Immultiply函数将溢出的数据截取为数据类型的最大值。

相关文档
最新文档