本博客仅仅是因为自己经常忘记,记笔记而已
clc
A=imread('a.jpg'); %读取到一张图片
thresh = graythresh(A); %自动确定二值化阈值
I2 = im2bw(A,thresh); %对图像二值化
figure(1)
imshow(A) %显示二值化之前的图片
figure(2)
imshow(I2) %显示二值化之后的图片
thresh是二值化的阈值,可以自己确定大小,在0到1之间.
边缘检测常用的五种
BW1=edge(I,'Roberts',0.16);
imshow(BW1);
BW2=edge(I,'Sobel',0.16);
imshow(BW2);
BW3=edge(I,'Prewitt',0.06);
imshow(BW3);
BW4=edge(I,'LOG',0.012);
imshow(BW4);
BW5=edge(I,'Canny',0.35);
imshow(BW5);
例;[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是一个标记矩阵.