您的位置:首页 > 编程语言 > MATLAB

MATLAB图像函数以及应用(第六章)边界问题

2015-07-20 22:39 781 查看
1、bwboundaries 二值图像区域边界追踪、、

功能:在二值图像中进行区域边界的追踪,采用区域跟踪的算法,给出二值图像中所有的外边界和内边界

用法:

[B L]=bwboundaries(bw,conn,option); B输出为P *1de 元胞矩阵,P为目标和洞的个数,B的每个元宝元素均是Q*2de 矩阵,矩阵的每一行包含像素点的行列坐标。

L为表示矩阵,用于标示二值图像中被划分边界的区域,包含目标和洞。

bw为二值图像,conn为搜索的联通方法 默认八联通,option表示搜索的方包含‘holes(内外边界) 和 noholes(外边界);

<span style="font-size:18px;"><span style="font-size:18px;">I=imread('rice.jpg');
Bw=im2bw(I,graythresh(I));
[B  L]=bwboundaries(Bw,'noholes');%L表示划分的区域
imshow(label2rgb(L,@jet,[0.5 0.5 0.5]);
hold on
for k=1:length(B)
boundary=b{k};
plot(boundary(:,2),boundary(:,1),’w','LineWidth',2);</span></span>

2、bwtraceboundary(bw,p,fstep,conn)函数

B=bwtraceboundary(bw,p,fstep,conn)

作用在二值图像中进行目标的追踪,采用基于曲线追踪的算法,按指定的起始点和方向进行搜索,最后返回起始点。

bw表示二值图像,p表示追踪的起点,fstep表示方向,(N S E W )四大方向 conn表示按照几连通区域来追踪

4或者8连通区域。

I=imread('lena.jpg');
bw=im2bw(I,0.6);
figure;
imshow(bw);
s=size(bw);
col=round(s(2)/2)-90;
row=find(bw(:,col),1);
contour=bwtraceboundary(bw,[row col],'W',4);
hold on;
plot(contour(:,2),contour(:,1),'r','LineWidth',2);


3、edge函数 寻找灰度图像的边界

作用寻找灰度图像的边界

bw=edge(I);







例子:

I=imread('lena.jpg');
imshow(I);
bw1=edge(I);
figure;
imshow(bw1);
bw2=edge(I,'sobel');
figure;
imshow(bw2);
bw3=edge(I,'prewitt');
figure;
imshow(bw3);
bw4=edge(I,'roberts');
figure;
imshow(bw4);
bw5=edge(I,'log');
figure;
imshow(bw5);
bw6=edge(I,'zerocross');
figure;
imshow(bw6);
bw7=edge(I,'canny');
figure;
imshow(bw7);


I=imread('lena.jpg');
imshow(I);
bw=edge(I,'roberts');

figure;
imshow(bw);
bw1=edge(I,'roberts',0.05);
figure;
imshow(bw1);
bw2=edge(I,'roberts',0.3);
figure;
imshow(bw2);
bw3=edge(I,'roberts',0.7);
figure;
imshow(bw3);
4、entropy 计算灰度图像的熵

E=entropy(I);

局部熵

J=entropyfilt(I) 计算灰度图像中的局部熵,J中的每一个像素为输入图像I中对应元素9*9邻域的熵值

5、graycomatrix 灰度共生矩阵

glcm=graycomatrix(I) 从图像I中建立灰度共生矩阵

stats=graycoprops(glcm,properties) 获取灰度共生矩阵glcm中指定的属性的状态。

字符串properties表示属性,取值可以为 contrast correlation energy homogeneity.

I=imread('lena.jpg');
glcm=graycomatrix(I);
stats=graycoprops(I,{'contrast','homogeneity'})


6、J=rangefilt(I) 计算图像的局部范围

J=rangefilt(I) 计算图像I的局部范围,返回矩阵J,输出矩阵J和I具有相同的维数,j中每一个像素的值为输入图像I中对应元素3*3邻域的范围(最大-最小)

<span style="font-size:18px;">I=imread('lena.jpg');
J=rangefilt(I);
imshow(J)
</span>
7、
<span style="font-size:18px;">I=imread('lena.jpg');
J=stdfilt(I);
imshow(J)
</span>


stdfilt 计算图像 的局部标准差

J=stdfilt(I) 计算图像的局部标准差,返回矩阵J 计算图像每个元素 3*3邻域内的标准差

8、corr2 计算两个矩阵的互相关系数

r=corr2(A,B) 计算矩阵A B 的互相关系数

公式



例子:

A=[1 3 4;6 3 7;3 5 7];
B=[2 6 8;3 2 1;3 8 9];
r=corr2(A,B)


9、imcontour 创建图像的等高线

创建图像的等高线 跟地图的等高线类似 相同像素的用线表示出来

imcontour(I) 绘制图像I的等高线,自动的进行坐标的设置,使输出图像的方向与外观与原始图像吻合。

imcontour(I,n) 绘制图像I的n个等高线,自动的进行坐标的设置,使输出图像的方向与外观与原始图像吻合。

I=imread('lena.jpg');
imshow(I);
figure;
imcontour(I,3)
10、imhist 创建图像的直方图

显示图像的直方图,表示图像中每一个灰度级与灰度级出现的频率对应关系,就是计算某个灰度级像素的个数,

imhist(I) 默认灰度级是256

imhist(I,n) n表示灰度级

[ counts x]=imhist(I,200)

表示直方图像素的个数,以及灰度等级向量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: