matlab图像检测处理——图形检测

本博客仅仅是因为自己经常忘记,记笔记而已

常用操作:

1、二值化

clc
A=imread('a.jpg');   %读取到一张图片   
thresh = graythresh(A);     %自动确定二值化阈值
I2 = im2bw(A,thresh);       %对图像二值化
 
figure(1)
imshow(A)     %显示二值化之前的图片
figure(2)
imshow(I2)    %显示二值化之后的图片

thresh是二值化的阈值,可以自己确定大小,在0到1之间.

2、边缘检测

边缘检测常用的五种

1、Robert算子边缘检测

BW1=edge(I,'Roberts',0.16);
imshow(BW1);

2、Sobel算子边缘检测

BW2=edge(I,'Sobel',0.16);
imshow(BW2);

3、Prewitt算子边缘检测

BW3=edge(I,'Prewitt',0.06);
imshow(BW3);

4、LOG算子边缘检测

BW4=edge(I,'LOG',0.012);
imshow(BW4);

5、Canny算子边缘检测

BW5=edge(I,'Canny',0.35);
imshow(BW5);

简单常用圆检测:imfindcircles

例;[c,r]=imfindcircles(image,[circles1,circles2]),image为检测图像矩阵,circles1,circles2分别是圆检测的半径,即确定可检测圆半径范围。注意:当圆检测半径范围较大时会拖慢程序速度。

检测到圆后可在图像中直接画出对应的圆及圆心:viscircles(c, r,'EdgeColor','b');其中c是圆心坐标,r是圆半径,‘EdgeColor’,‘b’分别是画圆的参数。

[c,r]=imfindcircles(image,[circles1,circles2]);
figure
imshow(image)
viscircles(c, r,'EdgeColor','b');

 

连通域检测常用函数

bwlabel  ;regionprops

[B,L]=bwlabel(B0);
img_reg = regionprops(B, 'all'); 

 

img_regb便是闭合区域的结构体,里面最常用的是Centroid:闭合区域质心;BoundingBox:矩形边界;PixelList连通域坐标

连通域边界检测

[B,L] = bwboundaries(image)

1.B是一个 P x 1 的数组,其中P代表连通体的个数.B内每一行是一个 Q x 2 的矩阵,Q内每一行表示连通体的边界像素的位置坐标(第一列是纵坐标Y,第二列是横坐标X),Q为边界像素的个数.

2.L是一个标记矩阵.

  • 23
    点赞
  • 159
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值