matlab_图像几何变换附带程序

合集下载

matlab实现平面图形的几何变换.docx

matlab实现平面图形的几何变换.docx

实验报告课程名称:数学实验实验名称:平而图形的几何变换指导教师:实验目的、要求:1.了解儿何变换的基本概念。

2.了解平移、伸缩、对称、旋转等变换。

3.学习掌握MATLAB软件冇关的命令。

实验仪器:安装有MATLAB软件的计算机实验步骤:一、实验原理1.几何变换程的基本概念在平面直角坐标系下,点A由坐标(x,y)表示,如果存在两个函数*=£(兀,刃,y'= f2(x,y)将点A(x, y)映射成点A\x,y),则称函数.齐,.%确定了一个平面上的几何变换丁。

如果能从上面的方程组中反解出(x,y):兀=g](*,卩),)'=g2(兀',)') 则称两数®,g2确定了卩的逆变换厂'。

2.几种常见的几何变换常见的平面图形的儿何变换有平移、伸缩、对称、旋转等变换。

平移变换:把函数_y = f(x)变化为y = f(x + a)f可将函数图形向右平移d个单位,把函数),=于(x)变化为y = fM + a),可将函数图形向上平移d个单位,伸缩变换:把函数y = /(兀)变化为y = f(sx),函数图形会压缩或伸长,其作是改变水平轴的刻度单位,因此$称为水平刻度参数,把函数y =/(兀)变化为y = “(x),则可改变垂直轴的刻度单位。

旋转变换:设函数图形以原点为中心,逆吋针旋转。

也,原来的坐标(兀,刃变为新的坐标(X,Y),旋转变换为*X = xcos& — ysin。

VY = xsinO+ ycosd对称变换:把函数y = /(兀)变化为y = -/(-x),函数图形关于原点对称;把函数y = /(X)变化为y = /(-%),函数图形关于y轴对称;把函数y =(兀)变化为y = -f(x), 函数图形关于x轴对称。

3.几何变换的矩阵表示平移变换、缩放变化、旋转变换、对称变换可以写成如下统一的形式:上式可写为如下矩阵表示形式X~a Ha\lb\Y =A yai\。

matlab图像的几何变换

matlab图像的几何变换

实验三 图像的几何运算一、实验目的1、 理解几何运算的基本概念与定义;2、 掌握在MA TLAB 中进行插值的方法3、 运用MATLAB 语言进行图像的插值缩放和插值旋转。

二、实验原理插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。

最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。

该算法的数学表示为:()()k f x f x = 如果1111()()22k k k k x x x x x -++<<+ 最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。

不过,当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。

双线性插值法的输出像素值是它在输入图像中2×2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。

设''''1,1,,m i m n j n a i m b j n <<+<<+=-=-,'i 和'j 是要插值点的坐标,则双线性插值的公式为:''(,)(1)(1)(,)(1)(1,)(1)(,1)(1,1)g i j a b g m n a b g m n a bg m n abg m n =--+-++-++++ 双三次插值的插值核为三次函数,其插值邻域的大小为4×4。

它的插值效果比较好,但相应的计算量也比较大,在这里不做讨论。

1、图像的缩放imresize 函数的语法格式为:B = imresize(A, m, method)2、图像的旋转imrotate 的语法格式为:B = imrotate(A, angle, method)三、实验内容及要求1. 读出girl.bmp 图像并显示。

matlab 图像的几何变换与彩色处理

matlab 图像的几何变换与彩色处理

实验四、图像的几何变换与彩色处理一、实验目的1理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;2熟悉图像几何变换的MATLAB操作和基本功能3 掌握彩色图像处理的基本技术二、实验步骤1 启动MATLAB程序,读入图像并对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和旋转操作%%%%%%平移>> flowerImg=imread('flower.jpg');>> se=translate(strel(1),[100 100]);>> img2=imdilate(flowerImg,se);>> subplot(1,2,1);>> imshow(flowerImg);>> subplot(1,2,2);>> imshow(img2);I1=imread('flower.jpg');I1=double(I1);H=size(I1);I2(1:H(1),1:H(2),1:H(3))=I1(H(1):-1:1,1:H(2),1:H(3)); I3(1:H(1),1:H(2),1:H(3))=I1(1:H(1),H(2):-1:1,1:H(3)); Subplot(2,2,1);Imshow(uint8(I1));Title('原图');Subplot(2,2,2);Imshow(uint8(I3));Title('水平镜像');Subplot(2,2,3);Imshow(uint8(I2));Title('垂直镜像');img1=imread('flower.jpg');figure,imshow(img1);%%%%%%缩放img2=imresize(img1,0.25);figure,imshow(img2);imwrite(img2,'a2.jpg');%%%%%%旋转img3=imrotate(img1,90); figure,imshow(img3); imwrite(img3,'a3.jpg');2 实验如下操作:(1)改变图像缩放比例f= imread('flower.jpg');T=[ 0.5 0 0; 0 0.5 0; 0 0 1];tform=maketform('affine',T);[g1,xdata1,ydata1]=imtransform(f,tform,'FillValue',255);T=[ 1 0 0; 0 1 0; 0 0 1];tform=maketform('affine',T);[g2,xdata2,ydata2]=imtransform(f,tform,'FillValue',255);T=[ 1.5 0 0; 0 1.5 0; 0 0 1];tform=maketform('affine',T);[g3,xdata3,ydata3]=imtransform(f,tform,'FillValue',255);hold onimshow(g3,'XData', xdata3, 'YData', ydata3)hold onimshow(g2,'XData', xdata2, 'YData', ydata2)hold onimshow(g1,'XData', xdata1, 'YData', ydata1)axis autoaxis on(2)改变图像的旋转角度,f= imread('flower.jpg');theta=3*pi/4;T=[cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1]; tform=maketform('affine',T);[g3,xdata3,ydata3]=imtransform(f,tform,'FillValue',255); theta=pi;T=[cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1]; tform=maketform('affine',T);[g4,xdata4,ydata4]=imtransform(f,tform,'FillValue',255); imshow(f);hold onimshow(g3,'XData', xdata3, 'YData', ydata3)hold onimshow(g4,'XData', xdata4, 'YData', ydata4)axis autoaxis on观察变换结果,要求把经过不同类型几何变换的图像和原图像在同一坐标系内显示输出(请参考课件或教材上的代码)3 读入一幅彩色图像,进行如下图像处理:(1)在RGB彩色空间中对图像进行模糊和锐化处理rgb= imread('flower.jpg');figure; imshow(rgb); title('原图');%平滑滤波r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);m=fspecial('average',[8,8]);r_filtered=imfilter(r,m);g_filtered=imfilter(g,m);b_filtered=imfilter(b,m);rgb_filtered=cat(3,r_filtered,g_filtered,b_filtered);figure; imshow(rgb_filtered); title('模糊后');imwrite(rgb_filtered, 'RGB彩色空间模糊后.jpg');%拉普拉斯lapMatrix=[1 1 1;1 -8 1;1 1 1];i_tmp=imfilter(rgb,lapMatrix,'replicate');i_sharped=imsubtract(rgb,i_tmp);figure; imshow(i_sharped); title('锐化后'); imwrite(i_sharped, 'RGB彩色空间锐化后.jpg');(2)在HSI彩色空间中,对H分量图像进行模糊和锐化处理,转换回RGB格式并观察效果(3)在HSI彩色空间中,对S分量图像进行模糊和锐化处理,转换回RGB格式并观察效果(4)在HSI彩色空间中,对I分量图像进行模糊和锐化处理,转换回RGB格式并观察效果fc = imread('flower.jpg');h = rgb2hsi(fc);H = h (:,:,1);S = h (:,:,2);I = h (:,:,3);subplot(3,3,1);imshow(fc); title('原图');%平滑滤波m=fspecial('average',[8,8]);h_filtered=imfilter(H,m);img_h_filtered = cat(3,h_filtered,S,I);rgb_h_filtered = hsi2rgb(img_h_filtered);subplot(3,3,2);imshow(rgb_h_filtered); title('H分量模糊后');imwrite(rgb_h_filtered, 'H分量模糊后.jpg');%拉普拉斯lapMatrix=[1 1 1;1 -8 1;1 1 1];i_tmp=imfilter(H,lapMatrix,'replicate');H_sharped=imsubtract(H,i_tmp);img_h_sharped = cat(3,H_sharped,S,I);rgb_h_sharped = hsi2rgb(img_h_sharped);subplot(3,3,3); imshow(rgb_h_sharped); title('H分量锐化后'); imwrite(rgb_h_sharped, 'H分量锐化后.jpg');subplot(3,3,4);imshow(fc); title('原图');%平滑滤波m=fspecial('average',[8,8]);s_filtered=imfilter(S,m);img_s_filtered = cat(3,H,s_filtered,I);rgb_s_filtered = hsi2rgb(img_s_filtered);subplot(3,3,5);imshow(rgb_s_filtered); title('S分量模糊后'); imwrite(rgb_s_filtered, 'S分量模糊后.jpg');%拉普拉斯lapMatrix=[1 1 1;1 -8 1;1 1 1];i_tmp=imfilter(S,lapMatrix,'replicate');s_sharped=imsubtract(S,i_tmp);img_s_sharped = cat(3,H,s_sharped,I);rgb_s_sharped = hsi2rgb(img_s_sharped);subplot(3,3,6); imshow(rgb_s_sharped); title('S分量锐化后'); imwrite(rgb_s_sharped, 'S分量锐化后.jpg');subplot(3,3,7);imshow(fc); title('原图');%平滑滤波m=fspecial('average',[8,8]);i_filtered=imfilter(I,m);img_i_filtered = cat(3,H,S,i_filtered);rgb_i_filtered = hsi2rgb(img_i_filtered);subplot(3,3,8);imshow(rgb_i_filtered); title('I分量模糊后'); imwrite(rgb_i_filtered, 'I分量模糊后.jpg');%拉普拉斯lapMatrix=[1 1 1;1 -8 1;1 1 1];i_tmp=imfilter(I,lapMatrix,'replicate');i_sharped=imsubtract(I,i_tmp);img_i_sharped = cat(3,H,S,i_sharped);rgb_i_sharped = hsi2rgb(img_i_sharped);subplot(3,3,9); imshow(rgb_i_sharped); title('I分量锐化后'); imwrite(rgb_i_sharped, 'I分量锐化后.jpg');由图看出I分量图像进行模糊和锐化处理的效果最好。

(完整版)数字图像处理MATLAB程序【完整版】

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。

三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。

(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

如何进行MATLAB图像配准和变换

如何进行MATLAB图像配准和变换

如何进行MATLAB图像配准和变换引言图像配准和变换是数字图像处理中一项重要任务,它能够将不同空间、不同感知角度或不同时间采集的图像进行对齐,从而实现图像像素之间的准确匹配。

MATLAB作为一种常用的科学计算软件,提供了丰富的图像处理函数和工具箱。

本文将介绍如何使用MATLAB进行图像配准和变换,以帮助读者更好地理解和应用这些功能。

一、图像配准基础1. 图像配准定义图像配准是指将两幅或多幅图像通过某种变化,使得它们的像素点对齐。

这种对齐可以通过平移、旋转、缩放等几何变换来实现。

2. 图像配准应用图像配准在许多领域都有广泛的应用,如医学图像处理、遥感图像处理、计算机视觉等。

例如,在医学领域,图像配准可以用于将不同时间拍摄的磁共振图像对齐,以便医生更好地观察患者的病情变化。

二、MATLAB图像配准函数MATLAB提供了几个常用的图像配准函数和工具箱,方便用户进行图像配准和变换。

下面将介绍一些常用的函数和工具箱。

1. imregister函数imregister函数是MATLAB中一个常用的图像配准函数,它能够将两幅图像进行几何变换以实现图像配准。

该函数基于最大互信息和归一化互相关等算法实现,能够自动处理旋转、平移、缩放和扭曲等运动畸变。

2. cpselect工具箱cpselect工具箱是MATLAB中用于图像配准的一个交互式工具箱。

它能够通过用户交互的方式,选择两幅图像中的对应点,计算并输出变换矩阵。

用户可以通过可视化的界面进行点选,并查看配准效果。

三、图像配准步骤基于MATLAB提供的函数和工具箱,进行图像配准的一般步骤如下:1. 加载图像使用imread函数加载待配准的图像,将其转换为灰度图像或彩色图像,存储为变量img1和img2。

2. 预处理图像根据具体情况,对图像进行预处理操作,如去噪、平滑、增强等。

这一步骤可以提高后续配准的准确性和稳定性。

3. 选择对应点使用cpselect工具箱,通过交互方式选择两幅图像中的对应点。

图像几何变换程序

图像几何变换程序

*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期计算机图象处理课程设计题目:图像几何变换程序设计专业班级:姓名:学号:指导教师:成绩:目录摘要 (2)一、前言 (3)二、算法分析与描述 (4)三、详细设计过程 (6)四、调试过程中出现的问题及相应解决办法 (10)五、程序运行截图及其说明 (11)六、简单操作手册 (14)设计总结 (15)参考文献 (16)致谢 (17)附录 (18)摘要本次课程设计我的题目是图像几何变换和图像分割程序设计,计算机图像处理的实现主要以数学模型为基础,通过建立合适的算法来实现具体的图像处理,几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。

常用的几何变换功能包括图像的平移、图像的旋转、图像的缩放、图像的错切等。

作为数字图像处理的一个重要部分,一般用MATLAB编程工具设计一个完整的应用程序,实现相应的图像几何变换功能。

图像分割是一种非常重要的图像处理技术,它不仅得到了广泛的重视和研究,也在实际中得到了大量的应用。

本文主要介绍了计算机图像处理中的图像分割程序的设计与实现。

关键词:图像几何变换、平移、旋转、放大缩小一、前言图形图像处理的应用领域涉及人类生活和工作的各个方面,它是从60年代以来随计算机的技术和VLSI的发展而产生、发展和不断成熟起来的一个新技术领域,理论上和实际应用上都并取得了巨大的成就。

数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化,所以图形图像的处理在我们的生活中又很重要的作用。

在对图像的研究和应用中,人们往往只对图像中的某些部分感兴趣。

这些部分通常称为目标或前景,它们一般对应图像中特定的、具体独特性质的区域。

为了辨识和分析目标,需要将它们分别提取出来,在此基础上才有可能对目标进一步利用。

图像的几何变换

图像的几何变换

实验报告二、图像的几何变换一、实验目的1掌握图像几何变换的原理;2 利用MATLAB实现图像的平移、比例缩放和旋转变换。

二、实验要求对一幅图像完成以下几何变换:先对x方向缩小0.5倍,y方向缩小0.25倍,然后平移[20,20],最后旋转90度三、实验环境MA TLAB编程软件四、实验内容1.利用imread()引入原图像2.利用tform=maketform()的矩阵变换来求几何变换3.调用imtransform()4.参考程序I=imread('C:\\ab.jpg');figure;subplot(2,2,1);imshow(I);tform1=maketform('affine',[0.5 0 0;0 0.25 0;0 0 1]');J=imtransform(I,tform1);figure;subplot(2,2,1);imshow(J);tform2=maketform('affine',[1 0 20;0 1 20;0 0 1]');G=imtransform(J,tform2);figure;subplot(2,2,1);imshow(G);tform3=maketform('affine',[cos(90) sin(90) 0;-sin(90) cos(90) 0;0 0 1]');F=imtransform(G,tform3);figure;subplot(2,2,1);imshow(F);五、实验结果六、实验总结1.在编程的过程中,对常用的函数没有完全的理解,并熟练运用。

2.应加强几何变换的练习。

图形图像处理-图像的几何变换Matlab实现

图形图像处理-图像的几何变换Matlab实现

湖南商学院课程_设计目录第一章绪论§ 1非彩色图像在Matlab中的矩阵 (3)§ 2彩色图像在Matlab中的矩阵 (4)第二章图像的镜像变换§ 1图像的水平方向镜像 (5)§ 2图像的垂直方向镜像 (8)第三章图像的旋转变换§ 1图像的旋转变换 (10)第四章图像的转置变换§ 1非彩色图像的转置变换 (13)§ 3彩色图像的转职变换 (13)第五章图像的缩放变换§ 1双线性内插法简介 (15)§ 2图像的缩放 (16)第六章图像的平移变换§ 1图像的平移变换 (19)第一章绪论§ 1非彩色图像在Matlab中的矩阵非彩色图像可以定义为一个二维函数f(x, y),其中x和y是Euclid空间(平面)坐标,任意一个二元组(x,y)处的值f称为该点处的强度或者灰度。

当x,y 和灰度值f是离散的数值时,我们称改图像为数字图像。

每一个非彩色图像在Matlab中都是一个二维矩阵A n m,而我们知道变换是指集合自身到自身的映射,所以对非彩色图像的变换其实质就是对二维矩阵人m 进行变换得到另一个二维矩阵B.m的过程。

例如图像1.1图1.1其在Matlab中的表示:>> A=imread('Fig3.24.jpg');>> size(A)ans = 298 252 %A是一个298行252列的矩阵§ 2彩色图像在Matlab中的矩阵不同于非彩色图像,每一个彩色图像在Maltab中都是三维矩阵A, m s。

例如图像2.1图2.1>> A=imread('Koala.jpg');>> size(A)ans =768 1024 3A是一个三维矩阵,768行1024列3层,3层是RGB三色的数值。

示意图:第二章图像的镜像变换§ 1图像的水平方向镜像1.1对于非彩色图像实现水平镜像操作,我们每次只需提取一列,使其与对称的列交换位置即可:aij a iiI Ia2 j a2i‘: 其中j 1I I I Ia nj」.a ni」原图像经过变换后为:132 152 210例1:对99 172 10进行水平方向镜像。

MATLAB数字图像处理几何变换傅里叶变换

MATLAB数字图像处理几何变换傅里叶变换

Matlab数字图像处理实验指导实验目的:通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。

实验环境:Matlab变成实验一图像的几何变换实验内容:设计一个程序,能够实现图像的各种几何变换。

实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。

实验原理:图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。

学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。

几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。

一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。

设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为:x1=s(x0,y0)y1=t(x0,y0)其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。

一、图像平移图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。

二、图像镜像镜像变换又分为水平镜像和垂直镜像。

水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。

三、图像转置图像转置是将图像像素的x坐标和y坐标呼唤。

图像的大小会随之改变——高度和宽度将呼唤。

四、图像的缩放图像缩放是指将图像大小按照指定的比率放大或者缩小。

图像缩放函数imresize();调用格式如下:B=imresize(A,Scale,method);参数A为要进行缩放的原始图像。

Scale为统一的缩放比例。

如果希望在x和y方向上以不同比例进行缩放,可用如下调用形式。

matlab图像几何变换和图像增强

matlab图像几何变换和图像增强

一.图像几何变化(1)放大,缩小,旋转程序:I=imread('111.jpg');J=imresize(I,1.5);L=imresize(I,0.75);K=imrotate(I,35,'bilinear');subplot(221),subimage(I); title('原图像');subplot(222),subimage(J); title('放大后图像');subplot(223),subimage(L); title('缩小后图像');subplot(224),subimage(K);title('旋转后图像');二.图像频域变换(1)傅里叶变换真彩图像灰度图像傅里叶变换谱程序:I=imread('111.jpg');figure(1);imshow(I);B=rgb2gray(I);figure(2);imshow(B)D=fftshift(fft2(B));figure(3);imshow(log(abs(D)),[ ]);(2)离散余弦变换真彩图灰度图进行离散余弦变换后程序:RGB=imread('111.jpg');figure(1);imshow(RGB);G=rgb2gray(RGB);figure(2);imshow(G);DCT=dct2(G);figure(3);imshow(log(abs(DCT)),[]);三.图像增强:(1)指数变换程序:f=imread('111.jpg')f=double(f);g=(2^2*(f-1))-1;f=uint8(f);g=uint8(g);subplot(1,2,1),subimage(f);subplot(1,2,2),subimage(g);(2)直方图均衡程序:I=imread('111.jpg');I=rgb2gray(I);figuresubplot(221);imshow(I);subplot(222);imhist(I)I1=histeq(I);figure;subplot(221);imshow(I1)subplot(222);imhist(I1)(3)空域滤波增强锐化滤波(Roberts算子Sobel算子拉普拉斯算子)程序:I=imread('000.tif');J1=edge(I,'roberts'); %Roberts算子figure;imshow(uint8(I));title('原图');figure;subplot(221);imshow(J1);title('Roberts算子锐化'); J2=fspecial('Sobel'); %Sobel算子J2=J2';TJ1=filter2(J2,I);J2=J2';TJ2=filter2(J2,I);subplot(222),imshow(TJ1,[]),title('垂直模板'); subplot(223),imshow(TJ2,[]),title('水平模板');f=fspecial('laplacian'); %拉普拉斯算子J3=imfilter(I,f);subplot(224),imshow(J3);title('拉普拉斯算子');平滑滤波及中值滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(221),imshow(I);title('原图像');subplot(222),imshow(J);title('添加椒盐噪声图像');k1=filter2(fspecial('average',3),J); %进行3*3模板平滑滤波k2=medfilt2(J); %进行3*3模板中值滤波subplot(223),imshow(uint8(k1));title('3*3模板平滑滤波');subplot(224),imshow(k2);title('3*3模板中值滤波');(4)频域滤波增强低通滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(121),imshow(J);title('添加椒盐噪声图像');J=double(J);f=fft2(J); %采用傅里叶变换g=fftshift(f) %数据矩阵平衡[M,N]=size(f);n=3;d0=20n1=floor(M/2)n2=floor(N/2)for i=1:M %进行低通滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2)h=1/(1+(d/d0)^(2*n));g1(i,j)=h*g(i,j);endendg1=ifftshift(g1);g1=uint8(real(ifft2(g1)));subplot(122);imshow(g1);title('低通滤波后的图像'); %显示低通滤波结果 高通滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(221),imshow(J);title('添加椒盐噪声图像');J=double(J);f=fft2(J); %采用傅里叶变换[M,N]=size(f);n=2;d0=20n1=floor(M/2)n2=floor(N/2)for i=1:M %进行巴特沃斯高通滤波及巴特沃斯高通加强滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d==0;h1=0;h2=0.5;elseh1=1/(1+(d0/d)^(2*n));h2=1/(1+(d0/d)^(2*n))+0.5;endgg1(i,j)=h1*g(i,j);gg2(i,j)=h2*g(i,j);endendgg1=ifftshift(gg1);gg1=uint8(real(ifft2(gg1)));subplot(222);imshow(gg1);title('巴特沃斯高通滤波后的图像'); %显示结果gg2=ifftshift(gg2);gg2=uint8(real(ifft2(gg2)));subplot(223);imshow(gg2);title('巴特沃斯高通滤波加强后的图像');同态滤波程序:J=imread('000.tif');subplot(121);imshow(J);title('原图像');J=double(J);f=fft2(J); %采用傅里叶变换[M,N]=size(f);d0=10;r1=0.5;rh=2c=4;n1=floor(M/2);n2=floor(N/2);for i=1:M %进行同态滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2)h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;g(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(122);imshow(g);title('同态滤波后的图像'); %显示同态滤波结果。

MATLAB图像处理之平移,旋转,倾斜,放缩

MATLAB图像处理之平移,旋转,倾斜,放缩

MATLAB图像处理之平移,旋转,倾斜,放缩实验内容:如何对号灰度图像(或彩色图像)进行方所、平移、旋转和综合变换实验内容一:图像的放缩实验程序:%注意,当处理图像大小过大时,请先使用size函数得出矩阵大小,否则处理之后图像会提示内存不足,或者先压缩图像,又或者可以改变电脑运行内存,具体方法可以根据具体情况通过论坛查询,这里就不再过多赘述. x1=imread('0045.jpg');%导入真彩图片0045.jpg,是三维矩阵b=imresize(x1,20);%将原图像放大20倍c=imresize(x1,0.05);%将原图像缩小为原来的20倍figure,subplot(131),imshow(x1),title('原始图像');%此区域内显示1行3列个图像,该图像位于第1个,显示x1的图像,并命名为“原始图像”subplot(132),imshow(b),title('放大20倍');%此区域内显示1行3列个图像,该图像位于第2个,显示b的图像,并命名为“放大200倍”subplot(133),imshow(c),title('缩小20倍');%此区域内显示1行3列个图像,该图像位于第3个,显示c的图像,并命名为“缩小20倍”实验结果:实验内容二:图像的旋转实验程序:clear allclc%imrotate(A,angle,method,bbox)%功能:将矩阵(图片)A旋转任意角度%参数:A——待操作矩阵,angle——需要旋转的角度,method——插值方法,bbox——输出图像大小%将矩阵A旋转angle度(任意),其中angle应用角度制表示;method包括'nearest'、'bilinear'、%'bicubic'分别为“邻近插值法”、“双线性插值法”、“三次卷积插值法”;%bbox(Bounding ? ? box defining size of output image)包括'crop'、'loose',%分别表示将旋转后的图像剪裁为输入图像大小后输出和已旋转后图像大小输出%x1=imread('0045.jpg');%导入真彩图片0045.jpg,是三维矩阵x2=rot90(x1,1);%将图片旋转整数倍个90度figure;%生成图像subplot(272);%此区域生成2行7列个图像,该图像位于第2个imshow(x1);%显示x1生成的图像title('原始图像');%命名x1图像为“原始图像”subplot(275);%此区域生成2行7列个图像,该图像位于第5个imshow(x2);%显示x2生成的图像title('旋转90度');%命名x1图像为“旋转90度”x3=imrotate(x1,30,'nearest','loose');%使用最邻近法逆时针将图像旋转30度,使用loose形式输出图像x5=imrotate(x1,30,'nearest','crop');%使用最邻近法逆时针将图像旋转30度,使用crop形式输出图像x4=imrotate(x1,30,'bilinear','crop');%使用双线性插值法逆时针将图像旋转30度,使用crop形式输出图像x6=imrotate(x1,30,'bilinear','loose');%使用双线性插值法逆时针将图像旋转30度,使用loose形式输出图像subplot(278);%此区域生成2行7列个图像,该图像位于第8个imshow(x3);%显示x3生成的图像title('最邻近法逆时针旋转30度1');%命名x3图像为“最邻近法逆时针旋转30度”subplot(2,7,12);%此区域生成2行7列个图像,该图像位于第12个imshow(x4);%显示x4生成的图像title('双线性插值法逆时针旋转30度1');%命名x4图像为“双线性插值法逆时针旋转30度”subplot(2,7,10);%此区域生成2行7列个图像,该图像位于第10个imshow(x5);%显示x5生成的图像title('最邻近法逆时针旋转30度2');%命名x5图像为“最邻近法逆时针旋转30度2”subplot(2,7,14);%此区域生成2行7列个图像,该图像位于第14个imshow(x6);%显示x6生成的图像title('双线性插值法逆时针旋转30度2');%命名x6图像为“双线性插值法逆时针旋转30度2”实验结果:实验内容三:图像的平移3.1将图像从一个位置平移到另一个位置实验程序:x1=imread('0045.jpg');%导入真彩图片0045.jpg,是三维矩阵figure(1);%生成图像subplot(121),imshow(x1),title('原始图像');%此区域生成1行2列个图像,该图像位于第1个,并命名为“原始图像”,显示x1的图像se1=translate(strel(1),[100 -100]);%形态学膨胀后j1就是平移后的图像j1=imdilate(x1,se1);%对x1,se1进行膨胀操作subplot(122),imshow(j1),title('左下平移');%此区域生成1行2列个图像,该图像位于第2个,并命名为“左下平移”,显示j1的图像实验结果:实验内容四:图像的倾斜实验程序:A=imread('0045.jpg');%将图像导入工作区tform=affine2d([2 0.33 0;0 1 0;0 0 1]);%创建定义仿射几何变换的affine2d 对象B=imwarp(A,tform);%使用 imwarp 对图像应用几何变换。

图像几何变换matlab

图像几何变换matlab

二、图像几何变换
由于拍摄图像的角度、距离等原因,可能
会需要对图像进行适当的几何变换。
几何变换又称为空间变换,是将一幅图像
中的坐标位置映射到另外一幅图像中的新 坐标位置。它不改变图像的像素值,只是 在图像平面上进行像素的重新安排。
三、解决几何变换问题的思路
一般要考虑原图像中的某个像素点的
x
y1 y0


y
2. 垂直镜像的变换公式
(x0,y0)是原图像上的点,中心轴如图所示, 垂直镜像对应的新坐标点为: x1=x0; y1=Nx0
y0;
y0
0
x1 x 垂 直 像
y1

N y
3. 程序实现:
4. MATLAB中实现镜像的函数
水平镜像和垂直镜像的变换矩阵:
[ x1 y1 1] [ x0 y0
(x0,y0)是原图像上的点,图像水平平移量为
a,垂直平移量为b,如图所示。
平移后的新坐标点为: x1=x0+a; y1=y0+b;
x0 0 a 平 移 x1 x
y0 b
y1 y
2. 程序实现:
3. 知识

2.2 图像平移
2.3 图像镜像 2.4 图像转置 2.5 图像缩放 2.6 图像旋转
G = rgb2gray(F); % 将F对应的RGB彩色图像数据 转换为灰度图像数据,存入G中
关于图像的函数和命令(2)
imwrite(G,‘rice1.bmp’); %将图像数据G写入文件
rice1中,存为新图片。
imshow(F); %显示图像数据F对应的图像
figure;
subplot(2,2,1);
坐标(x0,y0) 和此像素点映射到新图像

图文详解matlab原始处理图像几何变换

图文详解matlab原始处理图像几何变换

图⽂详解matlab原始处理图像⼏何变换⽬录(⼀)图像⼏何变换理论知识(1)图像的平移与⽐例(2)关于旋转变换(3)关于对称变换(4)复合变换(⼆)matlab编程实现变换(1)对图像的理解(2)⽐例变换(3)对称变换总结(⼀)图像⼏何变换理论知识(1)图像的平移与⽐例图像的平移很简单,平移前后的坐标分别为(x,y)和(x',y'),则满⾜的关系式为x'= x +Tx;y'= y +Ty;其中Tx与Ty分别为对应的偏移量。

图像的⽐例也很简单,可以描述为:x'=S_x * x; y'=S_y * y;那么上述的关系怎么⽤⼀个矩阵来表⽰呢?⼀个很重要的矩阵来了,那就是变换矩阵T,并且对于⼆维坐标下的点,⼀般转化为笛卡尔坐标系下进⾏计算,⽤⼀个三维点表⽰⼆维的,只不过把最后⼀项值置为1,这样⼀个⼆维坐标(x,y)就变为(x,y,1)了。

在把上述的平移等式关系转化为矩阵形式为:⽐例等式关系为:(2)关于旋转变换对于某个点,在坐标系中的变换为(旋转⾓度为θ,并且逆时针旋转为正):那么可以看出,这个时候对应的旋转矩阵为T就如图上所⽰。

(3)关于对称变换对称变换⽐较简单,还是以点的变换为例,⽐如变换前的点P(x,y)和变换后的点P'=(x',y'),那么对称变换包括点关于x 轴、y轴、原点、y=x、y=-x等等,点的变换可以⾃⼰推导下,这样也就可以得到对应的变换矩阵T了。

⽐如,关于x对称的话,T=[1,0,0;0,-1,0;0,0,1],关于原点对称的话,T=[-1,0,0;0,-1,0;0,0,1];关于y=x对称的话,T=[0,1,0;1,0,0;0,0,1];等等。

(4)复合变换下⾯再重点介绍下复合变换,因为有的变换不是简单的初等变换,但是有⼀点需要明确的是任何复合变换都可以⽤初等变换⼀步步变换⽽来。

⽐如前⾯的旋转变换,旋转点选取的是原点,这样才有的那个公式,那要是旋转点不是原点怎么办?⽐如任⼀点s(X_f,Y_f),那么点P绕着点s旋转⼀定的⾓度θ该怎么表⽰呢?这⾥就要把这个复合变换化成为3个简单的初等变换,具体步骤为:⾸先把s点平移操作⾄原点(这个过程中,相当于所有的点都按照⼀定的⽅向平移了),然后相当于在原点对平移后的P点进⾏旋转变换,变换完后再把这个店反平移回去,这样是不是就相当于完成了那个复合变换。

数字图像处理(MATLAB版)第5章 几何变换

数字图像处理(MATLAB版)第5章  几何变换

f12

f1n 1 f 2 n 1 f nn 1
f 22 fn2
f1n f2n f nn
0 0 G 0 0
0 f11 f 21 f n1
0 f12

f 22 fn2
0 f1n 1 f 2 n 1 f nn 1

sin (5-36) cos
图像旋转角度用矩阵形式表示为 x cos sin x (5-37) y sin cos y
所以,图像旋转可以分解成三次图像的 错切来实现。
5.2.6 图像的镜像变换
5.4.1 画图软件中的图像扭曲 5.4.2 图像二维空间变换
5.4.1 画图软件中的图像扭曲
在图像处理软件中,都提供了图像扭曲 的功能。
a1 T T1T2 0 0 0 0 a2 0 d1 0 0 1 0 0 d2 0 0 a1a2 0 0 1 0 0 d1d 2 0 0 0 1
(5-54)
3.复合旋转
5.4 图像的几何变换
imcrop函数调用格式为:
● ● ● ● ● ● ● ● ● I2=imcrop(I) X2=imcrop(I, map) RGB2=imcrop(RGB) I2=imcrop(I, rect) X2=imcrop(X, map, rect) RGB2=imcrop(RGB, rect) […]=imcrop(x, y, …) [A, rect]=imcrop(…) [x,y, A, rect]=imcrop( …)
1.水平镜像
2.垂直镜像
3.对角镜像

图像几何变换

图像几何变换

实验三图像几何变换实验3.1 图像的缩放一.实验目的1.熟悉matlab图像处理工具箱及图像缩放函数的使用;2.掌握图像缩放的方法和应用;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');figure,imshow(I);scale = 0.5;J = imresize(I,scale);figure,imshow(J);四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像缩放函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察matlab环境下图像缩放后的结果。

(a)原始图像 (b)缩放后的图像六.实验报告要求输入一幅灰度图像,给出其图像缩放后的结果,然后改变缩放比率,观察图像缩放后结果柄进行分析。

原始图片缩放后的图像0.5 缩放后的图像0.2结果分析:J = imresize(I,scale);%返回的图像B的长宽是图像I的长宽的scale倍,即缩放图像。

scale大于1,则放大图像;scale小于1,缩小图像。

实验3.2 图像旋转一.实验目的1.熟悉matlab图像处理工具箱及图像旋转函数的使用;2.理解和掌握图像旋转的方法和应用;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');figure,imshow(I);theta = 30;K = imrotate(I,theta); % Try varying the angle, theta.figure, imshow(K)四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。

实验-图像几何变换

实验-图像几何变换

图像的几何变换一、实验目的1、掌握图像几何变换的基本原理2、掌握如何利用Matlab相应函数对图像进行几何变换(图像缩小、放大、旋转等)3、学会自己编写简单几何变换的程序二、实验内容1、对所选图像进行缩小操作2、对所选图像进行放大操作3、对所选图像进行旋转操作三、实验过程源程序及图像:p1=imread('moon.tif ');info=imfinfo('moon.tif');W=info.Width;H=info.Height;%显示原始图像figure(1);imshow(p1);%使用imresize()函数将原始图像缩小为原图形的0.5倍p2=imresize(p1,0.5);figure(2);imshow(p2);%不使用imresize()函数将原始图像缩小为原图形的0.5倍c=2;i=1:W./c;j=1:H./c;I=floor(c*i); J=floor(c*j);p3(j,i)=p1(J,I);figure(3);imshow(p3);%使用imresize()函数将原始图像放大为原图形的2倍p4=imresize(p1,2);figure(4);imshow(p4);%将原始图形旋转30度显示p6=imrotate(p1,30);figure(6);imshow(p6);%对旋转的图形进行插值计算p8=imrotate(p1,30,'bilinear');figure(8);imshow(p8);注:与图六中未标明插值结果相同,即Matlab中使用的函数会自动对变换后的图像进行插值计算。

【数字图像处理】5.第四章 图像的几何变换与MATLAB实现

【数字图像处理】5.第四章 图像的几何变换与MATLAB实现

4 图像的剪切
在MATLAB中,函数imcrop实现图像的剪切操作。该 操作剪切的是图像中的一个矩形子图,用户可以通过参 数指定这个矩形四个顶点的坐标,也可以交互地用鼠标 选取这个矩形。
函数的调用格式如下: I2=imcrop(I) X2=imcrop(X,map) RGB2=imcrop(RGB)
是:空点的像素值等于前一点的像素值。 3. 同样的操作重复M1行。
插值处理示意图:
图像的减半缩小效果
图像的按比例缩小效果
图像的不按比例任意缩小
图像的成倍放大效果
图像大比例放大时的马赛克效应
放大10倍
图像的不按比例放大
图像的旋转效果
图像旋转中的插值处理效果
第四章 图像的几何变换与MATLAB实现 4.1 图像的几何变换 4.2 MATLAB中的图像几何操作
例:
3、图像的旋转
下图给出了图像旋转的原理示意图。
θ
为了尽量不扩大画布,所以是以画面的中心点为坐 标原点进行旋转的。所以有: 设图像大小为M*N,作新图像的画布为M1*N1.
M1 N sin M cos N1 N cos M sin
X (x M / 2) cos ( y N / 2)sin M1/ 2 Y (x M / 2)sin ( y N / 2) cos N1/ 2
例:
因为像素的坐标都是整数,所以当用前面的 方法旋转时,会出现画面上有许多的空点,(即 白点)这就影响了旋转图像的效果。为此我们还 需要进行图像的空点的插值。
最简单的方法是行插值或是列插值方法: 1. 找出当前行的最小和最大的非白点的坐
标,记作:(i,k1)、(i,k2)。 2. 在 (k1,k2) 范围内进行插值,插值的方法

几何变换的matlab程序示例

几何变换的matlab程序示例

几何变换是图像处理中常见的操作,通过对图像进行旋转、平移、缩放等变换,可以实现图像的翻转、修正以及透视等效果。

MATLAB作为一种强大的数学工具,提供了丰富的函数和工具箱,可以方便地进行各种几何变换的计算和实现。

本文将结合实例,介绍如何使用MATLAB进行几何变换的程序示例,包括图像旋转、平移和缩放等操作。

1. 图像旋转图像旋转是一种常见的几何变换操作,可以通过MATLAB中的imrotate函数来实现。

该函数可以对图像进行指定角度的旋转,其基本语法为:```matlabrotated_img = imrotate(img, angle);```其中,img为待旋转的图像,angle为旋转的角度。

通过这个函数,可以实现图像的任意角度的旋转操作。

2. 图像平移图像平移是指沿着x轴和y轴的方向对图像进行移动,可以通过MATLAB中的imtranslate函数来实现。

其基本语法为:```matlabtranslated_img = imtranslate(img, [x_shift, y_shift]);```其中,img为待平移的图像,[x_shift, y_shift]为沿x轴和y轴的平移距离。

通过该函数,可以实现对图像的任意平移操作。

3. 图像缩放图像缩放是指对图像的大小进行调整,可以通过MATLAB中的imresize函数来实现。

其基本语法为:```matlabresized_img = imresize(img, scale);```其中,img为待缩放的图像,scale为缩放比例。

通过该函数,可以实现对图像的任意缩放操作。

除了以上三种基本的几何变换操作外,MATLAB还提供了一些其他相关的函数和工具箱,如仿射变换、透射变换等。

通过这些工具,可以实现更加复杂和多样化的图像处理操作。

总结通过本文的介绍,我们了解到了MATLAB中几何变换的基本操作,包括图像旋转、平移和缩放。

这些操作可以帮助我们实现对图像的各种修正和调整,从而得到我们想要的效果。

数字图像处理实验报告图像增强处理与几何变换

数字图像处理实验报告图像增强处理与几何变换

实验图像增强处理与几何变换一、实验目的利用Matlab图像处理工具箱中的函数实现图像点处理、空间域平滑和锐化处理、彩色图像处理、几何处理,巩固其原理与计算方法学习,深化课程理论认知。

二、实验内容1、图像点处理:灰度变换、直方图均衡化和直方图规定处理;2、图像均值滤波和中值滤波、图像锐化处理;3、图像几何变换处理;4、图像彩色合成和彩色变换处理;三、实验步骤1、图像点处理:灰度变换、直方图均衡化和直方图规定处理;1.1图像的灰度变换启用MATLAB,输入以下代码运行I= imread('cameraman-8.bmp','bmp');figure; subplot(2,2,1), imshow(I);%获取图像直方图subplot(2,2,2),imhist(I);[counts1,x1] = imhist(I);%观察Counts,x的值subplot(2,2,3),stem(x1,counts1);%图像灰度变换J=imadjust(I,[0.1 0.7],[0.0 0.9]);subplot(2,2,4), imshow (J);%对比灰度变换前后的图像及其直方图figure;subplot(2,3,1),imshow(I);subplot(2,3,2),imshow(J);subplot(2,3,4),imhist(I);subplot(2,3,5),imhist(J);[counts2,x2] = imhist(J);subplot(2,3,6), stem(x2,counts2);图 1.1.1图 1.1.21.2图像直方图均衡化启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp') ;%直方图均衡化处理J=histeq(I) ;%对比均衡化处理前后的图像及其直方图figure(1),subplot(2,2,1),imshow(I),subplot(2,2,2),imshow(J); figure(1),subplot(2,2,3),imhist(I),subplot(2,2,4),imhist(J);图 1.2 1.3直方图规定化启用MATLAB,输入以下代码运行I1=imread('TM5.bmp','bmp');I2=imread('TM3.bmp','bmp');%直方图规定化处理K1=histeq(I1,imhist(I2));%对比规定化处理前后的图像及其直方图figure;subplot(3,2,1),imshow(I1);subplot(3,2,2), imhist(I1);subplot(3,2,3),imshow(I2);subplot(3,2,4), imhist(I2);subplot(3,2,5),imshow(K1);subplot(3,2,6), imhist(K1);图 1.32、图像空间域平滑2.1 用均值滤波器实现图像空间域的平滑启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp');J=imnoise(I,'gaussian'); %添加高斯噪声K=imnoise(I,'salt & pepper'); %添加椒盐噪声M=imnoise(I,'speckle'); %添加乘性噪声H=ones(3,3)/9; %3*3的均值去噪模板%滤波去噪处理I1=imfilter(I,H);J1=imfilter(J,H);K1=imfilter(K,H);M1=imfilter(M,H) ;%对比线性滤波去噪处理前后的图像figure;subplot(2,4,1),imshow(I);title('原图');subplot(2,4,2),imshow(J); title('高斯噪声图像'); subplot(2,4,3),imshow(K); title('椒盐噪声图像'); subplot(2,4,4),imshow(M); title('乘性噪声图像'); subplot(2,4,6),imshow(J1); title('高斯噪声滤波图像'); subplot(2,4,7),imshow(K1); title('椒盐噪声滤波图像'); subplot(2,4,8),imshow(M1) ; title('乘性噪声滤波图像') ; 输出图像如下图 2.12.2 用中值滤波器实现图像空间域的平滑启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp');I1=imnoise(I,'gaussian');I2=imnoise(I,'salt & pepper',0.02);I3=imnoise(I,'speckle');%3×3中值滤波模板J=medfilt2(I,[3,3]);J1=medfilt2(I1,[3,3]);J2=medfilt2(I2,[3,3]);J3=medfilt2(I3,[3,3]);figure,subplot(2,4,1),imshow(I) ; title('原图') ;subplot(2,4,2),imshow(I1) ; title('添加高斯噪声') ;subplot(2,4,3),imshow(I2) ; title('添加椒盐噪声') ;subplot(2,4,4),imshow(I3) ; title('添加乘性噪声') ;subplot(2,4,6),imshow(J1) ;title('高斯噪声3*3中值滤波') ; subplot(2,4,7),imshow(J2) ;title('椒盐噪声3*3中值滤波') ; subplot(2,4,8),imshow(J3) ;title('乘性噪声3*3中值滤波') ;K=medfilt2(I, [5,5]); %5×5中值滤波模板K1=medfilt2(I1,[5,5]);K2=medfilt2(I2,[5,5]);K3=medfilt2(I3,[5,5]);figure;subplot(2,2,1),imshow(K); title('原图5*5中值滤波'); subplot(2,2,2),imshow(K1) ; title('高斯噪声5*5中值滤波') ; subplot(2,2,3),imshow(K2); title('椒盐噪声5*5中值滤波'); subplot(2,2,4),imshow(K3) ; title('乘性噪声5*5中值滤波'); 输出结果如下图 2.2.1图 2.2.22.3 图像空间域锐化启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp','bmp')H=fspecial('sobel')%用sobel算子做模板%锐化处理J=imfilter(I,H)%锐化处理前后图像对比figure,subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(J); 输出图像如下图 2.33、图像几何变换3.1 缩放启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp', 'bmp') ;%放大图像J=imresize(I,2) ;%缩小图像K=imresize(I,0.5) ;%图像对比figure(1),subplot(),imshow(I),title('原图'),figure(2),subplot(),imshow(J),title('放大两倍的图'),figure(3),subplot(),imshow(K),title('缩小0.5倍的图') ;输出图像如下图 3.1.1 图3.1.2图 3.1.33.2旋转启用MATLAB,输入以下代码运行I=imread('cameraman-8.bmp', 'bmp') ;%旋转图像M=imrotate(I,45) ;%图像对比figure;subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(M) ;输出图像如下图 3.24、彩色图像处理4.1彩色合成启用MATLAB,输入以下代码运行I=imread('peppers.bmp','bmp');J1=I; J2=I;J3=I; J4=I;J5=I;%改变J1、J2、J3、J4、J5中的波段次序,组合成新的波段合成J1(:,:,1)=I(:,:,2); J1(:,:,2)=I(:,:,3); J1(:,:,3)=I(:,:,1) ;J2(:,:,1)=I(:,:,1); J2(:,:,2)=I(:,:,3); J2(:,:,3)=I(:,:,2) ;J3(:,:,1)=I(:,:,2); J3(:,:,2)=I(:,:,1); J3(:,:,3)=I(:,:,3) ;J4(:,:,1)=I(:,:,3); J4(:,:,2)=I(:,:,2); J4(:,:,3)=I(:,:,1) ;J5(:,:,1)=I(:,:,3); J5(:,:,2)=I(:,:,1); J5(:,:,3)=I(:,:,2) ;%对比原图像I与新图像J1、J2、J3、J4、J5的彩色差异,理解假彩色合成figure,subplot(2,3,1),imshow(I),title('原图');subplot(2,3,2),imshow(J1),title('变换一') ;subplot(2,3,3),imshow(J2),title('变换二') ;subplot(2,3,4),imshow(J3),title('变换三') ;subplot(2,3,5),imshow(J4),title('变换四') ;subplot(2,3,6),imshow(J5),title('变换五');输出图像如下图4.1 4.2彩色变换启用MATLAB,输入以下代码运行I=imread('peppers.bmp','bmp');HSV=rgb2hsv(I) ;RGB=hsv2rgb(HSV) ;%对比彩色变换前后的图像figure;subplot(1,3,1),imshow(I),title('原图'),subplot(1,3,2),imshow(HSV),title('HSV图像'); subplot(1,3,3),imshow(RGB),title('RGB图像') ;输出结果如下图 4.2四、实验算法要点总结1、图像点处理直方图修正法通常分为直方图均衡化和直方图规定化两类2、图像均值滤波和中值滤波、图像锐化处理3、图像几何变换处理4、图像彩色合成和彩色变换处理通过映射函数将彩色图像或多光谱图像变换成新的三基色分量线性假彩色映射表示为:。

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

实验四:图像几何变换(编程报告)
一、实验目的
(1)学习几种常见的图像几何变换,并通过实验体会几何变换的效果;
(2)掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换的算法原理及编
程实现
(3)掌握matlab编程环境中基本的图像处理函数
(4)掌握图像的复合变换
二、涉及知识点
(1)图像几何变换不改变图像像素的值,只改变像素所在的几何位置
(2)图像裁剪imcrop函数,语法格式为:
B=imcrop(A);交互式用鼠标选取区域进行剪切
B=imcrop(A,[left top right bottom]);针对指定的区域[left top right bottom]进行剪切
(3)图像缩放imresize函数,语法格式为:
B = imresize(A,m,method)
这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。

B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是
缩小)。

(4)图像旋转imrotate函数,语法格式为:
B = imrotate(A,angle,’crop’),参数crop用于指定裁剪旋转后超出图像的部分。

三、实验内容
(1)将图像hehua.bmp裁剪成200X200大小
(2)制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色
填充
(3)利用剪切图像函数制作动画
(4)将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法,分别显
示图像。

(5)将图像水平镜像,再顺时针旋转45度,显示旋转后的图。

(6)将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果
四、实验环境
Windows下matlab编程环境
五、实验源代码及结果
1.f=imread('hehua.bmp');
figure;
imshow(f);
title('原图');
f2=imcrop(f,[50,50,250,250]);
figure;
imshow(uint8(f2));
title('裁剪后');
imwrite(f2,'d:/5/hehua1.bmp');
2.f=imread('hehua1.bmp');
[m,n,x]=size(f);
f=double(f);
for i=1:10
mx=10*i;
my=10*i;
g=zeros(m,n,x)+255;
%g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x);
g(1:m-mx,1:n-my ,1:x)=f(mx+1:m,my+1:n,1:x);
figure;
imshow(uint8(g));
end
3.f=imread('hehua1.bmp');
[m,n]=size(f);
for i=50:10:200
m=i;
n=i;
f2=imcrop(f,[n,n,m,m]);
figure;
imshow(uint8(f2));
end
4.f=imread('hehua1.bmp');
figure;
imshow(f);
title('原图');
f=double(f);
f1=imresize(f,1.5,'bilinear');
figure;
imshow(uint8(f1));
title('放大1.5倍');
f2=imresize(f,0.8,'bilinear');
figure;
imshow(uint8(f2));
title('缩小0.8倍');
5.f=imread('hehua1.bmp');
subplot(131);
imshow(f);
title('原图');
[m,n,x]=size(f);
g=zeros(m,n,x);
for i=1:m
for j=1:n
for k=1:x
g(i,j,k)=f(i,n-j+1,k);
end
end
end
subplot(132);
imshow(uint8(g));
title('水平镜像');
f2=imrotate(g,45,'crop');
subplot(133);
imshow(uint8(f2));
title('顺时针旋转45度');
6.f=imread('hehua1.bmp');
subplot(131);
imshow(f);
title('原图');
h=size(f);
f1=zeros(h(1)+round(h(2)*tan(pi/6)),h(2),h(3));
for m=1:h(1)
for n=1:h(2)
f1(m+round(n*tan(pi/6)),n,1:h(3))=f(m,n,1:h(3));
end
end
subplot(132);
imshow(uint8(f1));
title('水平30度');
f2=zeros(h(1),h(2)+round(h(2)*tan(pi/4)),h(3));
for m=1:h(1)
for n=1:h(2)
f2(m,n+round(m*tan(pi/4)),1:h(3))=f(m,n,1:h(3));
end
end
subplot(133);
imshow(uint8(f2));
title('垂直45度');
六、心得体会。

相关文档
最新文档