如何作物对象在图像自动?
5视图(30天)
显示旧的评论
接受的答案
为副总经理
2022年11月10日
它可能是更好的工作得到更好的分割,但这是一种你可能方法清理。
%,这是一个逻辑的一个屏幕截图
%这不会是相同的尺寸与原始
使用imwrite %保存图像,而不是储蓄
inpict = imread (“pillsc.png”);
%摆脱小斑点
inpict = bwareaopen (inpict, 200);%选择一些最低blob区域
%得到对象属性
S = regionprops (inpict“循环”,“区域”,“图像”);
%找到近乎圆形的东西
iscircular = ((S。循环]> 0.9);%选择一个限制
circareas = [S (iscircular) .Area];%的圆形区域对象
%如果你想选择只有最大的圆形物体
[bigcircarea bigcircidx] = max (circareas);
bigcircidx = iscircular (bigcircidx);
%如果你想剪短的对象的副本
bigcircpict = S (bigcircidx) .Image;
%显示对象和它的面积
imshow (bigcircpict)
bigcircarea
3评论
为副总经理
2022年11月10日
再次,保存
这些图片
,而不是截图的图片。我最终使用的图片是不一样的你用的图片,因为你给了我一个压缩的截图,可能不是相同的大小。
无论如何。评论提到,你将不得不调整参数以适应任何你使用图片。因为我没有
你的任何实际的图片
,这不是我能做的事情。我添加一个小错误检查。循环是由前阈值低于预期。
%,这是一个逻辑的一个屏幕截图
%这不会是相同的尺寸与原始
使用imwrite %保存图像,而不是储蓄
inpict = imread (“aaaaaaaaaaaaaaaaaaaaaaaaaa.png”);
%摆脱小斑点
inpict = bwareaopen (inpict, 200);%选择一些最低blob区域
%得到对象属性
S = regionprops (inpict“循环”,“区域”,“图像”);
%找到近乎圆形的东西
iscircular = ((S。循环]> 0.7);%选择一个限制
如果isempty (iscircular)
错误(没有发现在这些条件下的圆形对象)
结束
circareas = [S (iscircular) .Area];%的圆形区域对象
%如果你想选择只有最大的圆形物体
[bigcircarea bigcircidx] = max (circareas);
bigcircidx = iscircular (bigcircidx);
%如果你想剪短的对象的副本
bigcircpict = S (bigcircidx) .Image;
%显示对象和它的面积
imshow (bigcircpict)
bigcircarea
我不知道不同的循环
甚至是值得的
。我不知道其他的图片是什么样子,我不知道能做些什么(或完成)改善初始阈值。
答案(1)
图像分析
2022年11月10日
binaryImage = imread (“pillsc.png”);
次要情节(2,1,1);
imshow (binaryImage);
%去掉斑点接触边界。
binaryImage = imclearborder (binaryImage);
%的最大的斑点。
binaryImage = bwareafilt (binaryImage, 1);
次要情节(2,1,2);
imshow (binaryImage);