簡體   English   中英

如何在此圖片中檢測具有特定尺寸的矩形,然后在Matlab中將矩形尺寸與預定尺寸進行比較?

[英]How can I detect a rectangle with a certain dimensions in this picture, and compare the rectangle dimensions with predetermined dimensions in Matlab?

這是電池的真實圖像。 我想檢測包含整個電池的最小矩形。 我為什么要這個? 因為我想知道此矩形的尺寸,所以可以將此尺寸與預定尺寸進行比較。 比較之后,結果必須是例如該電池是否為AA電池。 謝謝。

在此處輸入圖片說明

您可以對圖像進行一些預處理(特定通道的閾值,此處為綠色通道)和中值濾波器,以去除不需要的背景信號。

然后是使用regionprops識別圖像中的對象的問題。 電池是面積最大的對象,因此您可以使用regionprops返回的結構中的適當索引來獲取封閉邊界框的大小。

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);

裁剪后的輸出:

在此處輸入圖片說明

然后,您只需要將像素值轉換為真實單位即可。 我會讓那部分交給你。

玩得開心!

無需為Matlab付費,只需在命令行中使用ImageMagick即可簡單,免費地完成此操作,ImageMagick已安裝在大多數Linux發行版中,並且適用於OSX和Windows。

convert battery.jpg -fuzz 50% -format "%@"  info:
1474x406+653+986

這告訴我們,如果我們剪裁掉背景,則剩余圖像(即您的電池)將為1474像素寬,406像素高,並且相對於圖像的左上角位於坐標653986處。

或實際上將其提取出來:

convert battery.jpg -fuzz 50% -trim result.jpg

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM