簡體   English   中英

在二維圖像(二進制)中找到x軸上像素值為1的最大坐標點(二進制)(Matlab)

[英]Find Maximum Coordinate Point where Pixel value is 1 on x-axis, in 2-D image (Binary) (Matlab)

我正在使用Matlab並且有一個二維數組(圖像),像這樣

0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 0
0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

在下面的數組中,我想獲得X和Y的值為“ 1”的第一個位置(相對於X軸)和X和Y的值為“ 1”的最后一個位置(相對於X軸) 。

有誰知道最簡單的方法嗎?

使用anyfind簡單方法。 我假設您的圖片稱為image

minimumX = find(any(image,1),1,'first')
maximumX = find(any(image,1),1,'last')

另一種方法是從regionprops使用BoundingBox

stats = regionprops(image,'BoundingBox');

minimumX = stats.BoundingBox(1);
maximumX = sum(stats.BoundingBox([1 3]));

您可以使用max來實現它,從而闡明以下事實:

[Y,I] = MAX(X,[],DIM)沿尺寸DIM運行。

然后

如果值包含多個最大元素,則返回第一個元素的索引。

img表示您的2D數組。 我假設您的x軸是行索引。 否則,將,2更改為,1 (三次),然后將fliplrflipud (一次)。

[valid, first] = max(img,[],2);
first(~valid) = NaN;
[~, last] = max(fliplr(img),[],2);
last = size(img,2)-last+1;
last(~valid) = NaN;

在您的示例中:

first =
   NaN
   NaN
     5
     3
     4
     5
     8
   NaN
   NaN

last =
   NaN
   NaN
     9
    10
    11
    10
     8
   NaN
   NaN

暫無
暫無

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

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