首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测出图像中具有一定尺寸的矩形,并在Matlab中将矩形维数与预定维数进行比较?

如何检测出图像中具有一定尺寸的矩形,并在Matlab中将矩形维数与预定维数进行比较?
EN

Stack Overflow用户
提问于 2015-08-20 11:30:38
回答 2查看 904关注 0票数 0

这是电池的真实图像。我想检测最小的矩形,其中包含完整的电池。我为什么想要这个?因为我想知道这个矩形的大小,所以我可以把这个尺寸和预定的尺寸进行比较。经过比较,结果必须是如果这个电池是一个AA电池,例如.谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 12:05:25

您可以应用一些预处理对您的图像(在特定通道的阈值,这里是绿色通道)和中值滤波器,以消除不必要的背景信号。

然后是使用区域道具识别图像中的对象的问题。电池是面积最大的对象,因此可以从regionprops返回的结构中使用适当的索引来获得包围框的大小。

代码语言:javascript
运行
复制
clear
clc

%/ Read and pre-process the image to clear unwanted signal
Im = imread('Battery.jpg');
ImBW = im2bw(Im(:,:,2),.25);
ImBW = medfilt2(ImBW,[7 7]);

%// Detect objects in cleaned image
S = regionprops(ImBW,'BoundingBox','Area');

%// Identify battery as largest object
[MaxArea,MaxIndex] = max(vertcat(S.Area));

imshow(Im,'InitialMagnification',20)

%// Display results and message
hold on

rectangle('Position',S(MaxIndex).BoundingBox,'LineWidth',2,'EdgeColor','y')

Length = S(MaxIndex).BoundingBox(3);
Height = S(MaxIndex).BoundingBox(4);

message = sprintf('The height is %0.2f pixels \nand length is %0.2f pixels',Height,Length);

h = msgbox(message);

裁剪产量:

然后,只需将像素值转换为实际单位即可。我会让你自己决定的。

玩得开心!

票数 0
EN

Stack Overflow用户

发布于 2015-08-21 16:09:24

不需要为Matlab付费,只需在命令行上免费使用ImageMagick,它安装在大多数Linux发行版上,可用于OSX和Windows。

代码语言:javascript
运行
复制
convert battery.jpg -fuzz 50% -format "%@"  info:
1474x406+653+986

这告诉我们,如果我们削减背景,其余的图像(即你的电池)将是1474像素宽,406像素高,并位于坐标653,986相对于图像的左上角。

或者这个会把它提取出来

代码语言:javascript
运行
复制
convert battery.jpg -fuzz 50% -trim result.jpg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32117086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档