MATLAB实现图像的平移缩放和旋转

MATLAB实现图像的平移缩放和旋转
MATLAB实现图像的平移缩放和旋转

数字图像处理课程设计

题目图像的几何变换重建

系 (部) 信息工程系

班级

姓名

学号

指导教师

2013 年 12 月 16 日至 12 月 27 日共 2 周

2013年 12 月 27 日

数字图像处理课程设计任务书

课程设计成绩评定表

目录

1 引言 (4)

1.1课程设计的目的.......................... 错误!未定义书签。

1.2课程设计的任务.......................... 错误!未定义书签。

1.3课程设计的要求.......................... 错误!未定义书签。

1.4开发工具................................ 错误!未定义书签。2设计内容 (4)

2.1设计内容 (4)

2.2 系统框图 (4)

3 设计方案 (5)

3.1功能模块的划分 (5)

3.2算法描述 (5)

3.3实现主要功能的原理和方法 (8)

3.3.1最近邻域插值法 (8)

3.3.2双线性插值法 (8)

4功能模块的具体实现 (10)

4.1 模块功能 (10)

4.2流程图 (11)

4.3程序清单及各模块的实现效果图 (11)

4.4 系统仿真与调试 (21)

5 总结与体会 (22)

参考文献 (22)

附录 (23)

1 引言

2设计内容

2.1设计内容

我选取的是图像的几何变换,设计内容如下,

(1)能够读取和存储图像。

(2)实现图像的平移、缩放、旋转几何变换。

(3)分别采用最近邻插值和双线性插值技术进行图像重建。

(4)编写代码实现上述功能。

图2-1系统框图

本次课设所做的图像几何变换包括平移变换、缩放变换和旋转变换。缩放变换和旋转变换均用双线性插值变换和最近邻插值变换两种方法来做,对图像进行处理后再存储。

3 设计方案

3.1功能模块的划分

本次设计整体分为四大模块:原图、平移、缩放和旋转。其中缩放和旋转又分别有双线性插值和最近邻插值两模块。

3.2算法描述

图像比例缩放是指将给定的图像在x 轴方向按比例缩放fx 倍,在y 轴按比例缩放fy 倍,从而获得一幅新的图像。如果fx=fy ,即在x 轴方向和y 轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx ≠fy ,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。

设原图像中的点P 0(x 0,y 0)比例缩放后,在新图像中的对应点为P(x,y),则比例缩放前后两点P 0(x 0,y 0)、P(x,y)之间的关系用矩阵形式可以表示为

?????

???????????????=??????????1100

0000

100y x fy fx y x (3-1)其逆运算为

?????

?????????????

????????

?=??????????110

010001100y x fy fx y x (3-2)即

???

?

??

?==fy y y fx x x 00

(3-3) 比例缩放所产生的图像中的像素可能在原图像中找不到相应得像素点,这样就必须进行插值处理。下面首先讨论图像的比例缩小。最简单的比例缩小时当fx=fy=0.5时,图像被缩到一半大小,此时缩小后图像中的(0,0)像素对应于原图像中的(0,0)像素;(0,1)像素对应于原图像中的(0,2)像素;(1,0)像素对应于原图像中的(2,0)像素,以此类推。图像缩小之后,因为承载的数据量小了,所以画布可相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行操作,即取原图的偶奇数行和偶奇数列构成新的图像。如果图像按任意比例缩小,

则需要计算选择的行和列。

如果M×N 大小的原图像F(x,y)缩小为kM×kN 大小的新图像I(x,y)时,则

I(x,y)=F(int(c×x),int(c×y)) (3-4)

其中,c=1/k 。由此公式可以构造出新图像。

当fx ≠fy 时,图像不按比例缩小,这种操作因为在x 方向和y 方向的缩小比例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:如果M×N 大小的旧图F(x,y)缩小为k 1M×k 2N 大小的新图像I(x,y)时,则

I(x,y)=F(int(c 1×x),int(c 2×y)) (3-5)

其中c 1=1/k 1,c 2=1/k 2,由此公式可以构造出新图像。

图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。而在图像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是信息的估计问题,所以较图像的缩小要难一些。当fx=fy=2时,图像被按全比例放大二倍,放大后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于原图中的(0,0.5)像素,该像素不存在,可以近似为(0,0)也可以近似为(0,1);(0,2)像素对应于原图像中的(0,1)像素;(1,0)像素对应于原图中的(0.5,0),它的像素值近似于(0,0)或(1,0)像素;(2,0)像素对应于原图中的(1,0)像素,依此类推。其实这是将原图像每行中的像素重复取值一遍,然后每行重复一次。

按比例将原图像放大k 倍时,如果按照最近邻域法则需要将一个像素值添在新图像的k×k 的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当fy fx ≠)0,(>fy fx 时,图像在x 方向和y 方向不按比例放大,此时这种操作由于x 方向和y 方向的放大倍数不同,一定会带来图像的几何畸变。放大的方法是将原图像的一个像素添到新图像的一个21k k ?的子块中去。为了提高几何变换后的图像质量,常采用线性插值法。该方法的原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。

旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点),(000y x P 逆时针旋转θ角后的对应点为

),(y x P 。那么,旋转前后点),(000y x P 、),(y x P 的坐标分别是:

??

?==α

α

cos cos 00r y r x (3-6) ?

?

?+=+=+=-=-=+=θθθαθαθαθ

θθαθαθαcos sin sin cos cos sin )sin(sin cos sin sin cos cos )cos(0000y x r r r y y x r r r x (3-7)

写成矩阵表达式为

????

?

???????????????-=??????????110

0cos sin 0sin cos 100y x y x θ

θθθ (3-8)其逆运算为

????

?

???????????????-=??????????110

0cos sin 0sin cos 100y x y x θ

θθθ

(3-9) 利用上述方法进行图像旋转时需要注意如下两点:

(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。

(2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。

以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时针旋转θ度,首先将原点平移到(a,b),即

??

??

?

?????--=1001001b a A (3-10) 然后旋转

????

??????-=00

0cos sin 0sin cos θ

θ

θθB (3-11) 然后再平移回来

??

??

?

?????=1001001b a C (3-12) 综上所述,变换矩阵为A B C T ??=。

3.3实现主要功能的原理和方法

3.3.1最近邻域插值法

最近邻域插值法:它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值,取离I(i/b,j/a,k)最近的整数点的灰度值为点I(i/b,j/a,k)的灰度值。取最近整数点用四舍五入。在许多情况下,最近邻插值的结果可以令人接受。

最邻近点插值取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点f k(i,j)(k =1,2,3,4)的距离为d k(k =1,2,3,4),则:g(i,j)=f k(i,j),d l=min{d1,d2,d3,d4},l=1,2,3,4。

最近邻点插值的一个隐含的假设条件是任一网格点p(x,y)的属性值都使用距它最的位置点的属性值,用每一个网格节点的最邻点值作为待的节点值[3]。当数据已经是均匀间隔分布,要先将数据转换为SURFER的网格文件,可以应用最近邻点插值法;或者在一个文件中,数据紧密完整,只有少数点没有取值,可用最近邻点插值法来填充无值的数据点。有时需要排除网格文件中的无值数据的区域,在搜索椭圆(SearchEllipse)设置一个值,对无数据区域赋予该网格文件里的空白值。设置的搜索半径的大小要小于该网格文件数据值之间的距离,所有的无数据网格节点都被赋予空白值。在使用最近邻点插值网格化法,将一个规则间隔的XYZ数据转换为一个网格文件时,可设置网格间隔和XYZ数据的数据点之间的间距相等。最近邻点插值网格化法没有选项,它是均质且无变化的,对均匀间隔的数据进行插值很有用,同时,它对填充无值数据的区域很有效。

3.3.2双线性插值法

双线性插值法:它是利用了需要处理的原始图像像素点周围的四个像素点的相关陛,通过双线眭算法计算得出的。对于一个目的坐标,通过向后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为[0,l]区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(I,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v)=(1-u)×(1-v)×f(,j)+(1-u)×v×f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+,j+1),其中f(i,j)表示源图像(i,j)处的的像素值,以此类推,这就是双线性插值法。

如图3-1所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。

在同一行内根据待插值像素点与其前后的原图像像素点的位置距离进行加权线性插值,即离原图像像素点越近的待插值像素点,原图像像素的加权系数就

越大;行间根据待插值行与其上下的原图像行间的距离进行加权线性插值,即离原图像行越近的待插值行,原图像行的加权系数就越大。

假设原始图像大小为size=n m ?,其中m 与n 分别是原始图像的行数与列<数。若图像的缩放因子是t(t>0),则目标图像的大小size=m t n t ???。对于目标图像的某个像素点P(x,y)通过P*1/t 可得到对应的原始图像坐标P ’( x1,y1),其中x1=x/t ,y1=y/t ,由于x1,y1都不是整数所以并不存在这样的点,这样可以找出与它相邻的四个点的灰度f1、f2、f3、f4,使用双线性插值算法就可以得到这个像素点P ’(x1,y1)的灰度,也就是像素点P(x,y)的灰度。

一个完整的双线性插值算法可描述如下:

(1)通过原始图像和比例因子得到新图像的大小,并创建新图像。 (2)由新图像的某个像素(x,y)映射到原始图像(x ’,y ’)处。

(3)对x ’,y ’取整得到(xx,yy)并得到(xx,yy)、(xx+1,yy)、(xx,yy+1)和(xx+1,yy+1)的值。

(4)利用双线性插值得到像素点(x,y)的值并写回新图像。 (5)重复步骤(2)直到新图像的所有像素写完。

图3-1双线性插值原理

4功能模块的具体实现

4.1 模块功能

本课程设计通过菜单和按钮的方式来对图片进行各种几何变换,操作简单,处理结果一目了然。系统具备良好的图形用户界面,通过按钮或菜单进行操作控制,能让用户方便地选择不同的图像文件进行处理,并显示图像处理的结果。

利用菜单按钮及简介的版块设计实现各功能的处理结果与操作方式。介绍图片处理按钮菜单的功能。主界面设计如下:

图4-1主界面

4.2流程图

图4-2流程图

4.3程序清单及各模块的实现效果图

读入原图代码如下,

img=imread('lena.bmp');

subplot(2,3,1);imshow(img);

title('原始图像');

imread函数读入图像并通过imshow函数显示出来。

运行结果如下,

图4-3原始图像

图像的平移代码如下,

delta_x=str2double(inputdlg('请输入向右平移量', 'INPUT scale factor', 1, {'-60'})); %负数为向左

delta_y=str2double(inputdlg('请输入向下平移量', 'INPUT scale factor', 1, {'-89'})); %负数为向上

img=imread('lena.bmp'); %这里v为原图像的高度,u为原图像的宽度

[v u]=size(img); %这里y为变换后图像高度,x为变换后图像宽度imgn=zeros(v+abs(delta_y),u+abs(delta_x));

rot=[1 0 0;0 1 0;delta_y delta_x 1];

inv_rot=inv(rot);

pix1=[1 1 1]*rot; %pix1(1),pix1(2)分别为变换后图像的左上角的y,x

pix4=[v u 1]*rot; %pix4(1),pix4(2)分别为变换后图像的右下角的y,x

%%向右下方移动

if delta_x>=0 && delta_y>=0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]*inv_rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=v && pix(2)<=u

imgn(y,x)=img(round(pix(1)),round(pix(2)));

end

end

end

end

%%向左下方移动

if delta_x<0 && delta_y>=0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]*inv_rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=v && pix(2)<=u

imgn(y,x-delta_x)=img(round(pix(1)),round(pix(2)));

end

end

end

end

%%向左上方移动

if delta_x<0 && delta_y<0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]*inv_rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=v && pix(2)<=u

imgn(y-delta_y,x-delta_x)=img(round(pix(1)),round(pix(2)));

end

end

end

end

%%向右上方移动

if delta_x>=0 && delta_y<0

for y=pix1(1):pix4(1)

for x=pix1(2):pix4(2)

pix=[y x 1]*inv_rot;

if pix(1)>=0.5 && pix(2)>=0.5 && pix(1)<=v && pix(2)<=u imgn(y-delta_y,x)=img(round(pix(1)),round(pix(2)));

end

end

end

end

subplot(2,3,4);

imshow(uint8(imgn));imwrite(uint8(imgn),'平移.bmp','bmp') ;

title('平移');

通过imread函数读取图像并编译运行之后首先出现对话框,输入数据点击确认,默认为向左偏移量为60 向上偏移量为89。再通过imwrite函数对图像进行存储。

图4-5运行平移出现的对话框

图4-6平移后的图像

图像的缩放变换。设计的缩放变换有双线性插值缩放和最近邻差值缩放两种。两种代码分别如下,

双线性插值缩放代码如下,

I=imread('lena.bmp'); %读入原图像

[rows,cols]=size(I);

K1 =str2double(inputdlg('请输入列缩放倍数', 'INPUT scale factor', 1, {'0.5'}));%行默认变为原来的0.5倍

K2 =str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1, {'1.5'}));%列默认变为原来的1.5倍

width = K1 * rows;

height = K2 * cols;

Out = uint8(zeros(width,height)); %创建输出图像矩阵

widthScale = rows/width;

heightScale = cols/height;

for x = 6:width - 6 % 6是为了防止矩阵超出边界溢出for y = 6:height - 6

oldX = x * widthScale; % oldX,oldY为原坐标,x,y为新坐标

oldY = y * heightScale;

if (oldX/double(uint16(oldX)) == 1.0) & (oldY/double(uint16(oldY)) == 1.0) Out(x,y) = I(int16(oldX),int16(oldY));%若oldX,oldY为整数,直接赋值else

a = double(uint16(oldX));

b = double(uint16(oldY));

x11 = double(I(a,b)); % x11 赋值为I(a,b)

x12 = double(I(a,b+1)); % x12 赋值为I(a,b+1)

x21 = double(I(a+1,b)); % x21 赋值为I(a+1,b)

x22 = double(I(a+1,b+1)); % x22 赋值为I(a+1,b+1)

Out(x,y) = uint8( (b+1-oldY) * ((oldX-a)*x21 + (a+1-oldX)*x11) + (oldY-b) * ((oldX-a)*x22 +(a+1-oldX) * x12) ); % 用双线性插值计算公式计算end

end

end

subplot(2,3,5);

imshow(Out);

title('双线性插值缩放');imwrite(uint8(imgn),'双线性插值缩放.bmp','bmp') ; 运行程序之后,和平移一样也是会先后出现两个对话框,输入合适的数据,点击确认即出现结果。下图是行缩放0.5倍,列缩放0.5倍。

图4-7运行双线性插值缩放出现的对话框

图4-8双线性插值缩放后的图像

最近邻差值缩放代码如下,

I=imread('lena.bmp');%读入图像

[rows,cols]=size(I);

K1 = str2double(inputdlg('请输入列缩放倍数', 'INPUT scale factor', 1, {'0.5'}));%列默认变为原来的0.6倍

K2 = str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1, {'1.5'}));%行默认变为原来的0.4倍

width = K1 * rows;

height = K2 * cols;

im2 = uint8(zeros(width,height)); %定义输出图像矩阵

widthScale = rows/width;

heightScale = cols/height;

for x = 6:width - 6 %为防止矩阵溢出而选择的参数6

for y = 6:height - 6

oldX = x * widthScale; %oldX,oldY为原坐标,x,y为新坐标

oldY = y * heightScale;

if(oldX/double(uint16(oldX)) == 1.0) & (oldY/double(uint16(oldY)) == 1.0) im2(x,y) = I(int16(oldX),int16(oldY));

else

a = double(round(oldX));

b = double(round(oldY)); %若不是整数四舍五入后把临近值赋过去

im2(x,y) = I(a,b);

end

end

end

subplot(2,3,6);

imshow(im2);

title('最近邻缩放');

imwrite(Out,'最近邻缩放.bmp','bmp');

运行程序之后,和上面一样也是会先后出现两个对话框,输入合适的数据,点击确认即出现结果。下图是选用默认值行缩放0.5倍,列缩放0.5倍。

图4-9运行最近邻插值缩放出现的对话框

图4-10最近邻插值缩放后的图像

旋转变换。设计的旋转变换有双线性插值旋转和最近邻插值旋转两种。

双线性插值旋转代码如下,

jiaodu=str2double(inputdlg('请输入旋转角度', 'INPUT scale factor', 1, {'60'})); %要旋转的角度,旋转方向为顺时针

img=imread('lena.bmp'); %这里v为原图像的高度,u为原图像的宽度

[h w]=size(img);

theta=jiaodu/180*pi;

rot=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1];

pix1=[1 1 1]*rot; %变换后图像左上点的坐标

pix2=[1 w 1]*rot; %变换后图像右上点的坐标

pix3=[h 1 1]*rot; %变换后图像左下点的坐标

pix4=[h w 1]*rot; %变换后图像右下点的坐标

height=round(max([abs(pix1(1)-pix4(1))+0.5

abs(pix2(1)-pix3(1))+0.5])); %变换后图像的高度

width=round(max([abs(pix1(2)-pix4(2))+0.5abs(pix2(2)-pix3(2))+0.5]));

%变换后图像的宽度

imgn=zeros(height,width);

delta_y=abs(min([pix1(1) pix2(1) pix3(1) pix4(1)])); %取得y方向的负轴超出的偏移量

delta_x=abs(min([pix1(2) pix2(2) pix3(2) pix4(2)])); %取得x方向的负轴超出的偏移量

for i=1-delta_y:height-delta_y

for j=1-delta_x:width-delta_x

pix=[i j 1]/rot; %用变换后图像的点的坐标去寻找原图像点的坐标,

float_Y=pix(1)-floor(pix(1));

float_X=pix(2)-floor(pix(2));

if pix(1)>=1 && pix(2)>=1 && pix(1) <= h && pix(2) <= w

pix_up_left=[floor(pix(1)) floor(pix(2))]; %四个相邻的点

pix_up_right=[floor(pix(1)) ceil(pix(2))];

pix_down_left=[ceil(pix(1)) floor(pix(2))];

pix_down_right=[ceil(pix(1)) ceil(pix(2))];

value_up_left=(1-float_X)*(1-float_Y);%计算临近四个点的权重

value_up_right=float_X*(1-float_Y);

value_down_left=(1-float_X)*float_Y;

value_down_right=float_X*float_Y;

imgn(i+delta_y,j+delta_x)=value_up_left*img(pix_up_left(1),pix_up_left(2))+... value_up_right*img(pix_up_right(1),pix_up_right(2))+...

value_down_left*img(pix_down_left(1),pix_down_left(2))+...

value_down_right*img(pix_down_right(1),pix_down_right(2));

end

end

end

subplot(2,3,2);

imshow(uint8(imgn));

title('双线性插值旋转');imwrite(uint8(imgn),'双线性插值旋转.bmp','bmp') ;

运行程序之后,先后出现一个对话框,输入合适的数据,点击确认即出现结果。下图是选用默认值顺时针旋转60度。

图4-11运行双线性插值旋转出现的对话框

图4-12双线性插值旋转后的图像

最近邻插值旋转代码如下,

H=1; %索引pix中第一个元素,即高度

W=2; %索引pix中第二个元素,即宽度

jiaodu=str2double(inputdlg('请输入旋转角度', 'INPUT scale factor', 1, {'60'})); %要旋转的角度,旋转方向为顺时针img=imread('lena.bmp'); %这里v为原图像的高度,u为原图像的宽度[v u]=size(img);

theta=jiaodu/180*pi;

rot=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1];

inv_rot=inv(rot);

pix1=[1 1 1]*rot; %变换后图像左上点的坐标

pix2=[1 u 1]*rot; %变换后图像右上点的坐标

pix3=[v 1 1]*rot; %变换后图像左下点的坐标

pix4=[v u 1]*rot; %变换后图像右下点的坐标

height=round(max([abs(pix1(H)-pix4(H))+0.5abs(pix2(H)-pix3(H))+0.5]));

%变换后图像的高度

width=round(max([abs(pix1(W)-pix4(W))+0.5abs(pix2(W)-pix3(W))+0.5]));

%变换后图像的宽度

imgn=zeros(height,width);

Matlab 图像处理相关函数命令大全

Matlab 图像处理相关函数命令大全 一、通用函数: colorbar 显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig)

MATLAB图像增强总结程序

MATLAB图像增强程序举例 1.灰度变换增强程序: % GRAY TRANSFORM clc; I=imread('pout.tif'); imshow(I); J=imadjust(I,[0.3 0.7],[0 1],1); %transforms the walues in the %intensity image I to values in J by linealy mapping %values between 0.3 and 0.7 to values between 0 and 1. figure; imshow(J); J=imadjust(I,[0.3 0.7],[0 1],0.5); % if GAMMA is less than 1,the mapping si weighted to ward higher (brighter) %output values. figure; imshow(J); J=imadjust(I,[0.3 0.7],[0 1],1.5); % if GAMMA is greater than 1,the mapping si weighted toward lower (darker) %output values. figure; imshow(J) J=imadjust(I,[0.3 0.7],[0 1],1); % If TOP

2.直方图灰度变换 %直方图灰度变换 [X,map]=imread('forest.tif'); I=ind2gray(X,map);%把索引图像转换为灰度图像 imshow(I); title('原图像'); improfile%用鼠标选择一条对角线,显示线段的灰度值 figure;subplot(121) plot(0:0.01:1,sqrt(0:0.01:1)) axis square title('平方根灰度变换函数') subplot(122) maxnum=double(max(max(I)));%取得二维数组最大值 J=sqrt(double(I)/maxnum);%把数据类型转换成double,然后进行平方根变换%sqrt函数不支持uint8类型 J=uint8(J*maxnum);%把数据类型转换成uint8类型

matlab中图像函数大全

Matlab中图像函数大全 图像增强 除高频噪声 1、lps 2、中值滤波(非线性) 3、空域模板滤波 1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。 1.2 imcontour 函数 功能:显示图像的等灰度值图 格式:imcontour(I,n),imcontour(I,v) 说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。 1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...)

MATLAB图像处理相关函数

一、通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig) warp 将图像显示到纹理映射表面 语法:warp(X,map) \ warp(I ,n) \ warp(z,...) warp(x,y,z,...) \ h=warp(...) zoom 缩放图像 语法:zoom on \ zoom off \ zoom out \ zoom reset \ zoom \ zoom xon \ zoom yon\ zoom(factor) \ zoom(fig,option) 二、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt) \ info=imfinfo(filename) imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt) \ [X,map]=imread(filename,fmt) \

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); figure subplot(221);imshow(I); subplot(222);imhist(I) I1=histeq(I); figure; subplot(221);imshow(I1) subplot(222);imhist(I1) (3)空域滤波增强 锐化滤波(Roberts算子Sobel算子拉普拉斯算子)

Matlab画函数图像

用Matlab画函数图像 一、螺旋线 1.静态螺旋线 a=0:0.1:20*pi; h=plot3(a.*cos(a),a.*sin(a),2.*a,'b','linewidth',2); axis([-50,50,-50,50,0,150]); grid on set(h,'erasemode','none','markersize',22); xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('静态螺旋线'); 2.动态螺旋线 t=0:0.1:10*pi; i=1; h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none'); grid on axis([-2 2 -2 2 0 35]) for i=2:length(t)

set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i)); drawnow pause(0.01) end title('动态螺旋线'); (图略) 3.圆柱螺旋线 t=0:0.1:10*pi; x=r.*cos(t); y=r.*sin(t); z=t; plot3(x,y,z,'h','linewidth',2); grid on axis('square') xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('圆柱螺旋线') 二、旋转抛物面

b=0:0.2:2*pi; [X,Y]=meshgrid(-6:0.1:6); Z=(X.^2+Y.^2)./4; meshc(X,Y,Z); axis('square') xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('旋转抛物面') 或直接用:ezsurfc('(X.^2+Y.^2)./4') 三、椭圆柱面 load clown ezsurf('(2*cos(u))','4*sin(u)','v',[0,2*pi,0,2*pi]) view(-105,40) %视角处理 shading interp %灯光处理 colormap(map) %颜色处理 grid on %添加网格线 axis equal %使x,y轴比例一致 xlabel('x轴');ylabel('y轴');zlabel('z轴'); %添加坐标轴说明title('椭圆柱面') %添加标题

图像增强及MATLAB实现

《数字图像处理》课程设计 课设题目:图像增强与MATLAB实现学校学院:华东交通大学理学院 学生班级:13级信息计算(2)班学生:超 学生学号:20130810010216 指导老师:自柱

图像增强与MATLAB实现 摘要 数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图像质量起着重要的作用。本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的技术要点,并对其图像增强方法进行性能评价。 关键字:图像;图像增强;算法

目录 一、MATLAB的简介 (1) 1.1MATLAB主要功能 (1) 二、MATLAB的主要功能 (1) 2.1数字增强技术概述 (1) 2.2数字图像的表示 (2)

三、直方图的均衡化 (2) 3.1图像的灰度 (2) 3.2灰度直方图 (2) 3.3直方图均衡化 (3) 四、图像二值化 (5) 4.1图像二值化 (5) 五、对比度增强 (7) 5.1对比度增强 (7) 5.2灰度调整 (8) 5.3对数变换 (9) 六、滤波 (10) 6.1平滑滤波 (10) 6.2线性平滑滤波程序: (11) 6.3非线性滤波 (12) 七、锐化 (18) 八、参考文献 (19) 九、自我评价 (20)

一、Matlab的简介 1.1 MATLAB主要功能 MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。 二、MATLAB的主要功能 2.1数字增强技术概述 图像增强是按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些信息使得图像更加实用。图像增强技术主要包含直方图修改处理、图像平滑处理、图像尖锐化处理等。 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:频域处理法和空域处理法。 频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。

MATLAB中图像函数大全 详解及例子

图像处理函数详解——strel 功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。 用法:SE=strel(shape,parameters) 创建由指定形状shape对应的结构元素。其中shape的种类有 arbitrary' 'pair' 'diamond' 'periodicline' 'disk' 'rectangle' 'line' 'square' 'octagon 参数parameters一般控制SE的大小。 例子: se1=strel('square',6) %创建6*6的正方形 se2=strel('line',10,45) %创建直线长度10,角度45 se3=strel('disk',15) %创建圆盘半径15 se4=strel('ball',15,5) %创建椭圆体,半径15,高度5

图像处理函数详解——roipoly 功能:用于选择图像中的多边形区域。 用法:BW=roipoly(I,c,r) BW=roipoly(I) BW=roipoly(x,y,I,xi,yi) [BW,xi,yi]=roipoly(...) [x,y,BW,xi,yi]=roipoly(...) BW=roipoly(I,c,r)表示用向量c、r指定多边形各点的X、Y坐标。BW选中的区域为1,其他部分的值为0. BW=roipoly(I)表示建立交互式的处理界面。 BW=roipoly(x,y,I,xi,yi)表示向量x和y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi,yi指定的多边形区域。 例子:I=imread('eight.tif'); c=[222272300270221194]; r=[21217512112175]; BW=roipoly(I,c,r); imshow(I)

matlab提供的红外图像增强实例

matlab里提供的TM图像增强实例: View code for landsatdemoRun this demo Landsat Color Composite landsatdemo Landsat color composite demo. This demo allows you to experiment with creating color composites from Landsat Thematic Mapper https://www.360docs.net/doc/3815357230.html,ndsat data consists of7spectral bands that each reveal different features of the region that is imaged.The data is read into a512-by-512-by-7array.To create a color composite, we form an RGB image by assigning spectral bands to red,green,and blue intensities. Try out some common color composites by clicking on the radio buttons.The numbers in square brackets map the spectral bands to red, green,and blue.The array[321]means band3will be shown as red intensities,band2will be shown as blue intensities,and band1will be shown as green intensities. "True Color[321]"-shows what our eyes would see from an airplane. "Near Infrared[432]"-shows vegetation as red,water as dark. "Shortwave Infrared[743]"-shows changes due to moisture. Click on"Custom Composite",and change the popup menus to create your own combinations of red,green,and blue. Click on"Single Band Intensity"to see individual bands as gray intensity images. Try turning off"Saturation Stretch"by clicking on the checkbox.For most Landsat data sets,saturation stretching is important.When saturation stretching is turned on,the demo clips2%of the pixels in each band and does a linear contrast stretch before displaying the image. Try turning on"Decorrelation Stretch"by clicking on the checkbox. This visual enhancement increases color separation by eliminating correlation between channels,making subtle spectral differences easier to recognize.If both"Saturation Stretch"and"Decorrelation Stretch"are checked,the decorrelation stretch is followed by a linear saturation stretch.

Matlab中图像函数大全

图像增强 1. 直方图均衡化的Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X, map) 就算和显示索引色图像X 的直方图,map 为调色板。用stem(x,coun ts) 同样可以显示直方图。 1.2 imcontour 函数 功能:显示图像的等灰度值图 格式:imcontour(I,n),imcontour(I,v) 说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamm a) 调整索引色图像的调色板map 。此时若[low high] 和[bottom top] 都为2×3的矩阵,则分别调整R、G、B 3个分量。

1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...) 说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象I 的直方图变换成用户指定的向量hgram 。hgram 中的每一个元素都在[0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数n ,缺省值为64;[J,T]=histeq(I,...)返回从能将图像I 的灰度直方图变换成图像J 的直方图的变换T ;newma p=histeq(X,map) 和[new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。 2. 噪声及其噪声的Matlab 实现 imnoise 函数 格式:J=imnoise(I,type) J=imnoise(I,type,parameter) 说明:J=imnoise(I,type) 返回对图像I 添加典型噪声后的有噪图像J ,参数type 和parameter 用于确定噪声的类型和相应的参数。 3. 图像滤波的Matlab 实现 3.1 conv2 函数 功能:计算二维卷积

matlab数字图像处理—图像增强汇总

图像增强 图像增强的定义 图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法,也是提高图像质量的过程[9]。图像增强的目的是使图像的某些特性方面更加鲜明、突出,使处理后的图像更适合人眼视觉特性或机器分析,以便于实现对图像的更高级的处理和分析。图像增强的过程往往也是一个矛盾的过程:图像增强希望既去除噪声又增强边缘。但是,增强边缘的同时会同时增强噪声,而滤去噪声又会使边缘在一定程度上模糊,因此,在图像增强的时候,往往是将这两部分进行折中,找到一个好的代价函数达到需要的增强目的[10]。传统的图像增强算法在确定转换函数时常是基于整个图像的统计量,如:ST 转换,直方图均衡,中值滤波,微分锐化,高通滤波等等。这样对应于某些局部区域的细节在计算整幅图的变换时其影响因为其值较小而常常被忽略掉,从而局部区域的增强效果常常不够理想,噪声滤波和边缘增强这两者的矛盾较难得到解决。 常用的图像增强方法 图像增强可分成两大类:空间域法和频率域法。基于空间域的算法处理时直接对图像灰度级做运算;基于频率域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。 基于空间域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。 基于频率域的算法把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。 ?????? ?????????????????????彩色图像灰度图像处理对象局部处理全局处理处理策略频率域模板处理(滤波)点处理(变换)空间域处理方法图像增强

matlab中的图像增强实验附程序代码

图像增强实验

一:试验目的 熟悉并掌握数字图像空域增强:空域变换增强,空域滤波增强 二:实验内容 (1)直方图均衡化进行图像增强代码: imag=imread('pout.tif'); imag=im2double(imag); subplot(2,2,1);imshow(imag);title('原始图像'); subplot(2,2,2);imhist(imag);title('原始图像的直方图'); imag1=histeq(imag); subplot(2,2,3);imshow(imag1);title('直方图均衡化后的图像'); subplot(2,2,4);imhist(imag1);title('直方图均衡化后的图像的直方图'); 直方图均衡化进行图像增强效果图 (2)对图像加入椒盐噪声,并分别用中值滤波和自适应的方法进行去噪处理的代码: imag2=imnoise(imag,'salt',0.02); imag3=medfilt2(imag2); imag4=wiener2(imag2); subplot(2,2,1);imshow(imag);title('原始图像'); subplot(2,2,2);imshow(imag2);title('加入椒盐噪声后的图像'); subplot(2,2,3);imshow(imag3);title('进行中值滤波后的图像'); subplot(2,2,4);imshow(imag4);title('进行自适应滤波后的图像'); 对图像加入椒盐噪声,并分别用中值滤波和自适应的方法进行去噪处理的效果 原始图 像 0.5 1 原始图像的直方图 直方图均衡化后的图像 0.5 1 0直方图均衡化后的图像的直方图

Matlab中图像处理常用函数的用法

Matlab中常见函数的用法 1size()函数 1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。 2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。 3)size(A,n) 如果在size函数的输入参数中再添加一项n,并用1、2或者3为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。如果A为一个二维数组,则可以将其看成一个第三维为1的数组,即size(A,3)的返回值为1。 2padarray()函数 B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像,padsize给出了给出了填充的行数和列数,通常用[r c]来表示。padval和direction分别表示填充方法和方向。它们的具体值和描述如下:Padval选项:'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展; 'replicate'表示图像大小通过复制外边界中的值来扩展; 'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。Direction选项:'pre'表示在每一维的第一个元素前填充; 'post'表示在每一维的最后一个元素后填充; 'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。 若参量中不包括direction,则默认值为'both';若参量中不包含padval,则默认用0来填充。若参量中不包括任何参数,则默认填充为零且方向为'both'。在计算结束时,图像会被修剪成原始大小。 3 meshgrid()函数 meshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的,它也可以是更高维的。该函数在使用matlab进行3-D图形的绘制方面有着广泛的应用。 [A,B]=Meshgrid(a,b),生成size(b)*size(a)大小的矩阵A和B。A矩阵相当于a从一行重复增加到size(b)行,B矩阵相当于把b转置成一列再重复增加到size(a)列。因此命令等效于A=ones(size(b))*a;B=b'*ones(size(a)) 实例:a=[1:2];a =12;b=[3:5];b =345;[A,B]=meshgrid(a,b) A = 1 2 1 2 1 2 B = 3 3 4 4 5 5 4 find()函数 find函数用于找到非零元素的索引和值。 1)ind = find(X) 找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)

图像增强及其matlab实现实例

图像增强及其matlab实现实例 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:1)频域处理法2)空域处理法;频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。 2.1 空域滤波增强 空域滤波增强:使用空域模板进行的图像处理被称为空域滤波,模板本身被称为空域滤波器。空域滤波器包括:线性滤波器和非线性滤波器 空域滤波处理效果来分类,可以分为平滑滤波器,和锐化滤波器,平滑的目的在于消除混杂在图像中的干扰因素,改善图像质量,强化图像表现特征。锐化的目的在于增强图像边缘,以及对图像进行识别和处理。 2.1.1 平滑滤波器:用于模糊处理和减小噪声, 线性平滑滤波器 平滑线性空间滤波器的输出(响应)是包含在滤波掩模邻域内像素的简单平均值。因此这些滤波器也被称为均值滤波器。平滑滤波器的概念很简单:它是用滤波掩模确定的领域内像素的平均值去代替图像每个像素点的值。这种处理减少了图像灰度的尖锐化。 注:每个掩模前边的乘数等于它的系数值的和,以计算平均值。(详见数字图像处理P--93) 我们经常用这些极端类型的模糊处理来去除图像中的一些小物体。 例子:在matlab中利用线性平滑滤波器处理一副图像(详见matlab7.0图像处理) I=imread('eight.tif'); J=imnoise(I,'salt & pepper',0.02); >> %添加椒盐噪声 >> subplot(221) >> imshow(I) >> title('原图像') >> subplot(222) >> imshow(J) >> title('添加椒盐噪声图像')

Matlab图像处理函数汇总

1、图像的变换 ①fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如: i=imread('104_8.tif'); j=fft2(i); k=ifft2(j); 2、模拟噪声生成函数和预定义滤波器 ①imnoise:用于对图像生成模拟噪声,如: i=imread('104_8.tif'); j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声 ②fspecial:用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('gaussian');%高斯低通滤波器 h=fspecial('laplacian');%拉普拉斯滤波器 h=fspecial('log');%高斯拉普拉斯(LoG)滤波器 h=fspecial('average');%均值滤波器 2、图像的增强 ①直方图:imhist函数用于数字图像的直方图显示,如: i=imread('104_8.tif'); imhist(i); ②直方图均化:histeq函数用于数字图像的直方图均化,如: i=imread('104_8.tif'); j=histeq(i); ③对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif'); j=imadjust(i,[0.3,0.7],[]); ④对数变换:log函数用于数字图像的对数变换,如: i=imread('104_8.tif'); j=double(i);

Matlab中图像函数

Matlab中图像函数 图像增强 1.直方图均衡化的Matlab实现 1.1 imhist函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n),imhist(X,map) 说明:imhist(I,n)其中,n为指定的灰度级数目,缺省值为256;imhist(X,map)就算和显示索引色图像X的直方图,map为调色板。用stem(x,counts)同样可以显示直方图。 1.2 imcontour函数 功能:显示图像的等灰度值图 格式:imcontour(I,n),imcontour(I,v) 说明:n为灰度级的个数,v是有用户指定所选的等灰度级向量。 1.3 imadjust函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[lowhigh],[bottomtop],gamma)其中,gamma为校正量r,[lowhigh]为原图像中要变换的灰度范围,[bottomtop]指定了变换后的灰度范围; newmap=imadjust(map,[lowhigh],[bottomtop],gamma)调整索引色图像的调色板map。此时若[lowhigh]和[bottomtop]都为2×3的矩阵,则分别调整R、G、B,3个分量。 1.4 histeq函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...) 说明:J=histeq(I,hgram)实现了所谓“直方图规定化”,即将原是图象I的直方图变换成用户指定的向量hgram。hgram中的每一个元素都在[0,1]中;J=histeq(I,n)指定均衡化后的灰度级数n,缺省值为64;[J,T]=histeq(I,...)返回从能将图像I的灰度直方图变换成图像J的直方图

基于MATLAB彩色图像及增强处理设计方法讲解

课程设计 题目基于MATLAB彩色图像及增强处理设计方法 学生姓名曹刘惠子学号 1110064087 所在院(系)物电学院 专业班级电子信息科学与技术1103 指导教师蒋媛 完成地点博源楼1102教室

基于MATLAB彩色图像及增强处理设计方法 曹刘惠子 (陕西理工学院物电学院电子信息科学与技术专业1103班级,陕西汉中 723000) 指导老师:蒋媛 [摘要]图像增强是指依据图像所存在的问题,按特定的需要突出一幅图像中的某一些信息,同时,削弱或去除某些冗余信息的处理方法。其主要目的是使得处理后的图像对给定的应用比原来的图像更加有效同时可以有效的改善图像质量。图像增强单纯从技术上可分成两大类:一类是频域处理法;一类是空域处理法。大多数是以灰度映射变换为基础的,所用的映射变换取决于增强的目的。彩色图像比灰度图像包含更多的信息,无论是对人们的视觉感受,还是后续的图像理解与分析,彩色图像都具有灰度图像无可比拟的优越性。本文主要研究基于MATLAB彩色图像的增强方法。不同原理产生的彩色图像有不同的处理方法,故在本文中主要论述彩色图像增强用法之间以及仿真结果的比较。 运用MATLAB 软件实现彩色图像增强仿真,比较处理方法。 [关键词]彩色图像图像增强时域频域MATLAB

目录 1绪论 (5) 1.1课题研究目的及意义 (5) 1.2本课题的研究内容 (5) 2彩色图像及其增强处理设计方法 (5) 2.1基本概念 (5) 2.2图像处理工具 (5) 2.3伪彩色增强 (6) 2.4真彩色增强 (8) 2.5假彩色增强 (10) 3 程序实现及比较 (10) 3.1伪彩色图像增强 (10) 3.2真彩色图像增强 (11) 3.3假彩色图像增强 (13)

matlab中绘图用的函数,语言

第四讲绘图功能

作为一个功能强大的工具软件,Matlab 具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。

4.1 二维图形 一、plot函数 函数格式:plot(x,y)其中x和y为坐标向量函数功能:以向量x、y为轴,绘制曲线。【例1】在区间0≤X≤2 内,绘制正弦曲线Y=SIN(X),其程序为: x=0:pi/100:2*pi; y=sin(x); plot(x,y)

一、plot函数 【例2】同时绘制正、余弦两条曲线Y1=SIN(X)和Y2=COS(X),其程序为: x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) plot函数还可以为plot(x,y1,x,y2,x,y3,…)形式,其功能是以公共向量x为X轴,分别以y1,y2,y3,…为Y轴,在同一幅图内绘制出多条曲线。

一、plot函数 (一)线型与颜色 格式:plot(x,y1,’cs’,...) 其中c表示颜色,s表示线型。 【例3】用不同线型和颜色重新绘制例4.2图形,其程序为:x=0:pi/100:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,'go',x,y2,'b-.') 其中参数'go'和'b-.'表示图形的颜色和线型。g表示绿色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型为点划线。

一、plot函数 (二)图形标记 在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。 title(‘加图形标题'); xlabel('加X轴标记'); ylabel('加Y轴标记'); text(X,Y,'添加文本');

图像增强与MATLAB实现

《数字图像处理》 课程设计 课设题目:图像增强与MATLAB实现学校学院:华东交通大学理学院 学生班级:13级信息计算(2)班 学生姓名:魏超 学生学号:216 指导老师:范自柱

图像增强与MATLAB实现 摘要 数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图像质量起着重要的作用。本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab 实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的技术要点,并对其图像增强方法进行性能评价。 关键字:图像;图像增强;算法 目录 一、MATLAB的简介........................ 错误!未定义书签。 1.1MATLAB主要功能 0 二、MATLAB的主要功能 0 2.1数字增强技术概述 0 2.2数字图像的表示 (1) 三、直方图的均衡化 (1) 3.1图像的灰度 (1) 3.2灰度直方图 (1) 3.3直方图均衡化 (2)

四、图像二值化 (4) 4.1图像二值化 (4) 五、对比度增强 (6) 5.1对比度增强 (6) 5.2灰度调整 (7) 5.3对数变换 (8) 六、滤波 (9) 6.1平滑滤波 (9) 6.2线性平滑滤波程序: (10) 6.3非线性滤波 (11) 七、锐化 (17) 八、参考文献 (18) 九、自我评价 (19)

一、Matlab的简介 1.1 MATLAB主要功能 MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。 二、MATLAB的主要功能 2.1数字增强技术概述 图像增强是按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些信息使得图像更加实用。图像增强技术主要包含直方图修改处理、图像平滑处理、图像尖锐化处理等。 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:频域处理法和空域处理法。 频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。

相关文档
最新文档