我怎么能找到一个对象在一个图像的质心和提取部分围绕中心一点吗

31日视图(30天)
你好,我b vry感激你如果你帮我找到一个芒果的质心图像(图片也有黑色背景)。n,我需要提取一条芒果图像质心。如果我在bw找到质心图像,窝我怎么能相互关连与彩色图像,提取其地带?请指导我。一些想法看录象。泰
6个评论
放进
放进 2017年2月27日
图像Analystm我会很感激如果你能帮助我以任何方式为以下问题。
我需要从给定的图像中提取对象集合。我想我能找到对象特性使用女士或冲浪算法。使用命令后提取对象集合,我得到的信息对象的结构,类似1 * 19对象。我如何提取有用的信息(比如重心或任何其他propoerties)从女士对象,以便这些信息可以用来找到blob在下个类似的图片吗?
提前谢谢!

登录置评。

接受的答案

图像分析
图像分析 2017年1月21日
附加的m文件。它产生一个矩形环的面具。根据需要调整。我仍然感兴趣为什么需要这样一个奇怪的面具。要解释为什么吗?
4评论
图像分析
图像分析 2017年3月2日
芒果自然不同的颜色。你可以用直方图和/或试图找到空间过滤器 “不寻常的” 看地区。

登录置评。

答案(1)

图像分析
图像分析 2017年1月12日
也许你的意思是这个。让我知道如果不是,和把你的形象。
%清理/初始化
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
%检查用户指定的工具箱安装和许可。
hasLicenseForToolbox =许可证(“测试”,“image_toolbox”);%许可证(‘测试’,‘Statistics_toolbox’),许可(“测试”、“Signal_toolbox”)
如果~ hasLicenseForToolbox
%用户没有安装工具箱,或者,没有可用的许可证。
%为例,有一个池的10许可证和所有已经被别人签出。
消息= sprintf (“对不起,但是你似乎没有图像处理工具箱。\你想继续的?”);
= questdlg(回复消息,“工具箱失踪”,“是的”,“不”,“是的”);
如果strcmpi(回答,“不”)
%的用户说不,所以退出。
返回;
结束
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%读入一个颜色图像演示。
文件夹= pwd;
文件夹= fileparts ((“peppers.png”));%确定演示文件夹(适用于所有版本)。
baseFileName =“MANGO.png”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
如果~存在(fullFileName“文件”)
%没有找到它。检查它的搜索路径。
fullFileName = baseFileName;%没有路径。
如果~存在(fullFileName“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (错误:%年代并不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
%得到图像的尺寸。numberOfColorChannels应该= 3。
(行、列,numberOfColorChannels) = (rgbImage)大小;
%显示原始彩色图像。
次要情节(2、3、1);
imshow (rgbImage);
;
标题(“原始彩色图像”,“字形大小”字形大小,“翻译”,“没有”);
%设置图属性:
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0 0 1 1));
%去掉工具栏和下拉菜单的图。
集(gcf,“工具栏”,“没有”,“菜单”,“没有”);
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)
%二进制图像。背景是0,那么就让我们来看看非零像素。
binaryImage = max (rgbImage [], 3) > 0;
%,以防有噪音,填补blob和提取的最大团。
binaryImage = imfill (binaryImage,“黑洞”);%填补。
binaryImage = bwareafilt (binaryImage, 1);%提取最大团。
%显示图像。
次要情节(2、3、2);
imshow (binaryImage);
标题(的二进制图像,“字形大小”字形大小,“翻译”,“没有”);
;
%的标签图片
[labeledImage, numBlobs] = bwlabel (binaryImage);
%测量质心
道具= regionprops (labeledImage,“重心”);
xCentroid = props.Centroid (1);
yCentroid = props.Centroid (2);
%把一个十字架。
持有;
情节(xCentroid yCentroid,“b +”,“MarkerSize”,50);
%计算欧氏距离变换
edtImage = bwdist (~ binaryImage);
%显示图像。
次要情节(2、3、3);
imshow (edtImage []);
标题(“欧氏距离变换图像”,“字形大小”字形大小,“翻译”,“没有”);
;
%把一个十字架。
持有;
情节(xCentroid yCentroid,“b +”,“MarkerSize”,50);
%找到它的最大价值。
maxEDT = max (edtImage (:))
%之间找到一条50和130像素的重心。
掩码= edtImage > (maxEDT - 130) & edtImage < (maxEDT - 50);
%显示面具的形象。
次要情节(2、3、4);
imshow(面具,[]);
标题(“环形罩形象”,“字形大小”字形大小,“翻译”,“没有”);
;
%面具原始彩色图像使用bsxfun()函数并显示它。
maskedRgbImage = bsxfun (@times rgbImage铸造(面具,“喜欢”rgbImage));
%显示面具的形象。
次要情节(2、3、5);
imshow (maskedRgbImage []);
标题(“蒙面形象”,“字形大小”字形大小,“翻译”,“没有”);
;
9日评论
图像分析
图像分析 2017年1月21日
我猜你不会回答我,所以我必须花时间编写一个猜测。看到我的其他建议的答案。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!