老郑MATLAB15题作业讲解Word下载.docx
- 文档编号:21650433
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:26
- 大小:415KB
老郑MATLAB15题作业讲解Word下载.docx
《老郑MATLAB15题作业讲解Word下载.docx》由会员分享,可在线阅读,更多相关《老郑MATLAB15题作业讲解Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
原图的直方图'
subplot(2,2,3);
imshow(B);
线性调整后'
subplot(2,2,4);
imhist(B);
调整后直方图'
第10题-基于灰度调色板的伪彩色方法例
伪彩色处理:
根据特定的准则将灰度图像转换为索引图像,或者将彩色图像转换成给定彩色分布的图像的过程.
灰度级—彩色变换法伪彩色处理
关键技术:
调色板的编码方法
在一个预定的调色板中查找该数值所对应的颜色
I1=imread('
\LenaRGB.bmp'
subplot(121);
imshow(I1);
I=rgb2gray(I1);
subplot(122);
imshow(I);
灰度处理后'
x=grayslice(a,256);
figure,imshow(a,hot(256));
伪彩色图像'
第14题-图像的镜像例
%镜像变换
[height,width,dim]=size(A);
tform=maketform('
affine'
[-100;
010;
width01]);
%定义水平镜像变换矩阵
B=imtransform(A,tform,'
nearest'
tform2=maketform('
[100;
0-10;
0height1]);
%定义垂直镜像变换矩阵
C=imtransform(A,tform2,'
subplot(1,3,1),imshow(A);
原图像'
subplot(1,3,2),imshow(B);
水平镜像'
subplot(1,3,3),imshow(C);
竖直镜像'
第18题-基于局部均值的图像缩小方法
原理:
计算采样间隔,得到
和
求出相临两个采样点之间所包含的原图像的子块,即为:
(5)
利用
的均值,求出缩小的图像.
例2如上例子,由式(5)可以将图像F分块为:
(6)
再由
得均值,得到缩小的图像为:
(7)
式中:
为式(6)各子块的均值,如
例3若图像为
按照以上例子缩小的比例.采用等间隔采样和采用局部均值采样得到缩小的图像分别为:
functiony=resize(a,mul1,mul2)
[m,n]=size(a)
m1=m*mul1;
n1=n*mul2;
fori=1:
m1;
forj=1:
n1;
b(i,j)=a(round(i/mul1),round(j/mul2));
end
y=b;
I=imread('
subplot(211),imshow(I);
J=resize(I,0.5,0.3);
subplot(212),imshow(J);
局部缩小后'
第22题-利用错切实现图像的旋转
错切(shear)是一种使对象形状发生变化的变换.经过错切的对象好像是由已经相互滑动的内部夹层组成.常用的错切变换有两种:
改变x坐标值和改变y坐标值.
H=1;
%索引pix中第一个元素,即高度
W=2;
%索引pix中第二个元素,即宽度
jiaodu=0;
%要旋转的角度,旋转方向为顺时针
%这里v为原图像的高度,u为原图像的宽度
imshow(img);
%这里y为变换后图像的高度,x为变换后图像的宽度
[vu]=size(img);
h=v;
%原图像的高度
w=u;
%原图像的宽度
pro=w/h;
%宽高比
%虽然这段程序是本人写的,不过这个仿射变换系数还是不太好表述,暂时是本人现在的理解。
%仿射变换系数,变换后图像的倾斜强度。
取值区间为(0,1)为图像向右上错切;
取0时不变换图像;
取1时为垂直错切,不显图像;
大于1时向左下错切图像
%区间为(-1,0)为向左上错切图像;
为-1时垂直错切,不显图像;
小于-1时为右下错切图像。
系数过大或过小处理时间会很长,再大/再小就会报错
aff_cof=0.15;
theta=jiaodu/180*pi;
rot1=[cos(theta)-sin(theta)0;
sin(theta)cos(theta)0;
001];
%旋转变换矩阵
rot2=[1aff_cof*pro0;
aff_cof*(1/pro)10;
%错切变换矩阵
rot=rot2*rot1;
%联合变换矩阵
inv_rot=inv(rot);
pix1=[111]*rot;
%变换后图像左上点的坐标
pix2=[1u1]*rot;
%变换后图像右上点的坐标
pix3=[v11]*rot;
%变换后图像左下点的坐标
pix4=[vu1]*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);
delta_y=abs(min([pix1(H)pix2(H)pix3(H)pix4(H)]));
%取得y方向的负轴超出的偏移量
delta_x=abs(min([pix1(W)pix2(W)pix3(W)pix4(W)]));
%取得x方向的负轴超出的偏移量
fory=1-delta_y:
height-delta_y
forx=1-delta_x:
width-delta_x
pix=[yx1]*inv_rot;
%用变换后图像的点的坐标去寻找原图像点的坐标
%否则有些变换后的图像的像素点无法完全填充
ifpix(H)>
=0.5&
&
pix(W)>
pix(H)<
=v&
pix(W)<
=uimgn(y+delta_y,x+delta_x)=img(round(pix(H)),round(pix(W)));
end
end
end
imshow(uint8(imgn));
错切旋转'
第26题-灰度最小方差的均值滤波器应用例
灰度最小方差的均值滤波器:
在去噪能力上弱于传统的均值、中值滤波,但在保留图像边缘和细节能力方面要强于前者。
子函数:
%该种方法的基本思想是:
先使用模板覆盖图像区域,若像素都属于一个区域,则区域内不含边界,则可以放心平滑去噪(高斯用均值,椒盐用中值);
否则像素属于不同部分,即区域含有边界,那我们不平滑去噪,保持边界即可。
%编程的思想是:
9个模板找出方差最小的那个模板,这个模板覆盖像素同属于同一区域的概率最高,含有边界的可能性最低,找出其对其平滑去噪即可
function[y]=grayminvariance(x)
[m,n]=size(x);
x=double(x);
y=x;
fori=3:
m-2
forj=3:
n-2
z1=[x(i-1,j+2),x(i,j+2),x(i+1,j+2),x(i-1,j+1),x(i,j+1),x(i+1,j+1),x(i,j)];
z2=[x(i-1,j-1),x(i,j-1),x(i+1,j-1),x(i-1,j-2),x(i,j-2),x(i+1,j-2),x(i,j)];
z3=[x(i-2,j+1),x(i-1,j+1),x(i-2,j),x(i-1,j),x(i-2,j-1),x(i-1,j-1),x(i,j)];
z4=[x(i+1,j+1),x(i+2,j+1),x(i+1,j),x(i+2,j),x(i+1,j-1),x(i+2,j-1),x(i,j)];
z5=[x(i-2,j+2),x(i-1,j+2),x(i-2,j+1),x(i-1,j+1),x(i,j+1),x(i-1,j),x(i,j)];
z6=[x(i+1,j+2),x(i+2,j+2),x(i,j+1),x(i+1,j+1),x(i+2,j+1),x(i+1,j),x(i,j)];
z7=[x(i-1,j),x(i-2,j-1),x(i-1,j-1),x(i,j-1),x(i-2,j-2),x(i-1,j-2),x(i,j)];
z8=[x(i+1,j),x(i,j-1),x(i+1,j-1),x(i+2,j-1),x(i+1,j-2),x(i+2,j-2),x(i,j)];
z9=[x(i-1,j+1),x(i,j+1),x(i+1,j+1),x(i-1,j-1),x(i,j-1),x(i+1,j-1),x(i-1,j),x(i,j),x(i+1,j)];
z=[z1,z2,z3,z4,z5,z6,z7,z8,z9];
h=[var(z1),var(z2),var(z3),var(z4),var(z5),var(z6),var(z7),var(z8),var(z9)];
%对9个方差进行冒泡排序法
fori1=1:
1:
8
forj1=1:
9-i1
ifh(1,j1)>
h(1,j1+1)
z0=z(1,j1);
%z0为临时变量
z(1,j1)=z(1,j1+1);
z(1,j1+1)=z0;
%最小方差已经求出,即h(1,1),对应z(1,1)这个向量,即对应的方差最小的模板
y(i,j)=mean(z(1,1));
%中心像素获得最小方差模板对应的均值
%y(i,j)=median(z(1,1));
%中心像素获得最小方差模板对应的中值
主函数:
I=rgb2gray(I);
[ef]=size(I);
%J=imnoise(I,'
salt&
pepper'
0.030);
J=imnoise(I,'
gaussian'
0,0.0002);
l=grayminvariance(J);
%灰度最小方差的均值滤波器
subplot(1,2,1),imshow(J),title('
原图处理'
subplot(1,2,2),imshow(uint8(l)),title('
灰度最小方差的均值滤波'
第30题-图像锐化处理-一阶微分算子(垂直水平)的应用例
垂直微分算子的设计思想与水平方向相同,通过一个可以检测出垂直方向上的像素值的变化模板来实现。
subplot(121),imshow(I);
原始图像'
II=eye(514,514);
fori=2:
513
forj=2:
II(i,j)=I(i-1,j-1);
II(2:
513,1)=I(:
2);
513,514)=I(:
511);
II(1,:
)=II(3,:
II(514,:
)=II(512,:
IX=zeros(512,512);
IY=zeros(512,512);
H1=[-101-101-101]'
;
H2=[-1-1-1000111]'
Block1=II(i-1:
i+1,j-1:
j+1);
X1=Block1(:
sum1=sum(X1.*H1);
sum2=sum(X1.*H2);
IX(i,j)=sum1;
IY(i,j)=sum2;
IX=-IX;
IY=-IY;
subplot(122),imshow(IX,[0511]);
一阶垂直锐化'
第34题-图像锐化处理-二阶微分算子Lapacian算子应用例
Laplacian算子是线性二阶微分算子,由于灰度均匀的区域或斜坡中间二阶差分为0,所以laplacian算子在这一区域对图像的不起作用或者说作用很少,而对于图像的斜坡或低灰度侧形成的下冲和在斜坡顶或高灰度侧形成的上冲部分,laplacian表现出很强的突出边缘的功能。
laplacian算子是利用边缘像素灰度值两旁的灰度值形成的屋顶状变化来对图像进行锐化。
a=imread('
h=[0-10-15-10-10];
j=conv2(a,h,'
same'
subplot(1,2,1);
imshow(a);
title('
subplot(1,2,2);
imshow(j,[]);
Laplacian算子锐化后图像'
第38题-基于图像灰度分布的阈值图像分割方法-灰度直方图的峰谷方法
峰谷法又称状态法。
状态法首先统计最简单图像的灰度直方图,若呈双峰且有明显的谷,则可以将谷所对应的灰度t作为阈值。
通过二值化处理,将目标分割出来。
特点:
适用于目标和背景的灰度差较大,直方图有明显谷的情况。
方法简单,但会受到噪声的干扰。
改进:
取均值、平滑等。
Lena.bmp'
subplot(221),imshow(I);
subplot(223),imhist(I);
newI=im2bw(I,150/255);
subplot(222),imshow(newI);
分割后的图像'
subplot(224),imhist(newI);
分割后的灰度直方图'
第42题-最大熵方法进行灰度图像分割
阈值分割是图像处理中的基本方法。
常用的阈值分割法有最小误差阈值法,最大类别方差法及最大熵法等。
以往提出的大部分熵阈值分割方法都是基于图像的一维灰度直方图的,之后有学者将其推广到二维的情形,也有人将模糊性引入最大熵原则,提出模糊C分类的最大熵原则,以获得最佳分割阈值。
该方法有较好的适应性,不需要先验知识,且对于非理想双峰直方图的图像也可进行分割。
但由于该方法用穷尽搜索寻找全局最优解,因此计算复杂,耗时长,影响此算法的实际应用和推广。
目前,一些学者尝试将进化算法和最大熵图像分割方法相结合,以缩短运算时间,降低计算复杂性,提高算法的实际应用价值。
%-----基于最大熵准则的图像分割--------
h=imhist(I);
h1=h;
len=length(h);
%求出所有的可能灰度
[m,n]=size(I);
h1=(h1+eps)/(m*n);
%算出各灰度点出现的概率
%---------具体算法------------
(len-1)
ifh(i)~=0
P1=sum(h(1:
i))/(m*n);
P2=sum(h(i+1):
len)/(m*n);
else
continue;
H1(i)=-(sum(h1(1:
i).*log10(h1(i+1))));
H2(i)=-(sum(h1((i+1):
len).*log10(h1((i+1):
len))));
H(i)=(1/P1)*H1(i)+H2(i)*(1/P2)+log10(P1*P2);
m1=max(H);
%获得最大熵
%--------------------------------------------------------
subplot(121),imshow(I,'
border'
tight'
I1=im2bw(I,m1/255);
%阈值分割
I1=mat2gray(I1);
subplot(122),imshow(I1,'
分割后'
第50题-综合边缘检测法在边缘检测中的应用
%读取原始图像
BW1=edge(I,'
roberts'
%Roberts算子边缘检测
subplot(222),imshow(BW1);
Roberts算子边缘检测'
BW2=edge(I,'
prewitt'
%Prewitt算子边缘检测
subplot(223),imshow(BW2);
Prewitt算子边缘检测'
BW3=edge(I,'
sobel'
%Sobel算子边缘检测
subplot(224),imshow(BW3);
Sobel算子边缘检测'
BW4=edge(I,'
log'
%LOG算子边缘检测
figure;
subplot(221),imshow(BW4);
LOG算子边缘检测'
BW5=edge(I,'
canny'
%Canny算子边缘检测
subplot(222),imshow(BW5);
Canny算子边缘检测'
BW6=edge(I,'
zerocross'
%过零点方法边缘检测
subplot(223),imshow(BW6);
过零点方法边缘检测'
BW7=edge(I,'
0);
%过零点阈值取零边缘检测
subplot(224),imshow(BW7);
过零点阈值取零边缘检测'
第54题-腐蚀与膨胀效果举例
膨胀原理:
膨胀:
将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
利用它可以填补物体中的空洞。
B对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:
如果B的原点平移到点(x,y),那么它与X的交集非空。
方法:
可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。
结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。
此外,imdilate还可以接受两个可选参数:
PADOPT(padopt)——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。
规则:
超出图像边界的像素值定义为该数据类型允许的最小值,对于二进制图像,这些像素值设置为0;
对于灰度图像,unit8类型的最小值也为0。
BW=zeros(90,100);
BW(40:
60,40:
70)=10;
SE=strel('
square'
30);
BW2=imdilate(BW,SE);
imshow(BW);
imshow(BW2);
膨胀后'
腐蚀原理:
腐蚀:
一种消除边界点,使边界向内部收缩的过程。
利用它可以消除小而且无意义的物体。
B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:
如果B的原点平移到点(x,y),那么B将完全包含于X中。
可以使用imerode函数进行图像腐蚀。
imerode函数需要两个基本输入参数:
待处理的输入图像以及结构元素对象。
此外,imerode函数还可以接受3个可选参数:
M——指定原始图像的行数。
超出图像边界的像素值定义为该数据类型允许的最大值,对于二进制图像,这些像素值设置为1;
对于灰度图像,unit8类型的最小值也为255。
BW1=imread('
arbitrary'
eye(5));
BW2=imerode(BW1,SE);
imshow(BW1);
腐蚀后'
第58题-白平衡处理方法应用例
这个算法是通过对图片的ycbcr色空间的分析来确定参考白点的,所以次算法可以说是自适应白平衡算法。
本算法选择参考白点的阀值是动态变化的,所以对于不同的图片,其阀值也不同。
通过对图片的cbcr坐标空间的分析,我们可以看到一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB15 作业 讲解