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 onfor 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)
表示直方图像素的个数,以及灰度等级向量