图像处理寻找图形中心并标记

一:设计方案原理

因该六个图像有明显的特征,黑色元素占绝大多数部分。所以可以通过把图像进行二值化,然后找到值为1的所有的行和列。分别对值为1的所有的行求平均数得到圆心的行,对值为1的所有的列求平均数得到圆心的列,然后通过彩色图像R、G、B在该圆心周围绘制以10为半径的圆。

二:详细的步骤和过程

先通过imread读出该图片,然后通过imshow显示出该图形,该图形为未经过处理的原图即为figure1。然后通过Gray=rgb2gray(I)得到该原图的灰度图像并显示出,该图形为figure2,通过内置函数threshold = graythresh(Gray),计算二值图像的一个合适的阈值。im2bw(Gray,threshold)得到二值图像该图形为figure3;然后通过bwareaopen(bw,30)去掉小面积图像,即去掉噪声,得到的图像为figure4;然后计算出去除掉噪声的矩阵的行和列,对该矩阵进行循环,找到值为1的所有的位置,行和列分别赋给矩阵a和矩阵b,计算这些所有位置的行的平均值和列的平均值。该两个平均值即近似为圆心坐标的行和列。为了显示的更加清楚,再次利用for循环,在圆心周围进行循环,在距离圆心为10以内的圆内全都标记成绿色,该图形为figure5。figure5即为我们最后标记好的图形。

三:程序的流程图

图 1程序设计流程图

四:程序的代码

clc
clear all            
close all            
I=imread('E:\图像分析与处理技术\3.JPG');
imshow(I)               %绘制图像
Gray=rgb2gray(I);       %灰度图像
figure,imshow(Gray)
threshold = graythresh(Gray);  %计算阈值
bw=im2bw(Gray,threshold);      %二值化图像
figure,imshow(bw)
bw2=bwareaopen(bw,30);         %删除小面积图像。去除噪声
figure,imshow(bw2);
[r,c]=size(bw2); %去除后矩阵的行和列
a=[];b=[];e=1;f=1;             %定义空矩阵进行循环
for i =1:r                     %找出二值图像数值为1的部分
    for k =1:c
        z=bw2(i,k);
        if z==1
            a(e)=i;
            b(f)=k;      
            e=e+1;
            f=f+1;
        end
    end
end
m=floor(mean(a(:)))     %m为行的平均值,n为列的平均值
n=floor(mean(b(:)))    %计算二值矩阵为1的所有行和所有列的平均值,向下取整
for p = m-10:m+10
    for q = floor(n-sqrt(100-(p-m)^2)):floor(n+sqrt(100-(p-m)^2))    %以中心点坐标,10为半径画圆
        I(p,q,1)=0;
        I(p,q,2)=255;        %的颜色为绿色
        I(p,q,3)=0;
    end
end
figure,imshow(I)
fprintf('图像的图形圆心坐标为(%d,%d)',m,n)         %圆心的行和列

五:图形处理的结果

这几个题目的二值化图像和滤除噪声后的图像较相似,只是位置有所不同,所以就以题目1的二值化图像和滤除后的图像为例,题目1的二值化图像如图2所示,二值化滤除后的图像如图3所示。

图 2题目1的二值化图像

 

图 3题目1二值化滤波后的图像

题目1的最终的处理的结果图像如图4所示,圆心坐标输出结果如图5所示。

图 4图像1处理的结果

图 5图像1的圆心坐标

题目3的最终的处理的结果图像如图6所示,圆心坐标输出结果如图7所示。

图 6图像3的处理结果

图 7图像3的圆心坐标

题目4的最终处理的结果图像如图8所示,圆心坐标输出结果如图9所示。 

图 8图像4的处理结果

 

图 9图像4的圆心坐标

题目5的最终的处理的结果图像如图10所示,圆心坐标输出结果如图11所示。

 图 10图像5的处理结果

图 11图像5的圆心坐标

题目6的最终的处理的结果图像如图12所示,圆心坐标输出结果如图13所示 

图 12图像6的处理结果

图 13图像6的圆心坐标

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值