Matlab 如何查找图像中列和行的第一个和最后一个非零值?

Matlab 如何查找图像中列和行的第一个和最后一个非零值?,matlab,indexing,find,Matlab,Indexing,Find,我遇到了麻烦,因为我有这个图像,我想做的只是处理非黑色的像素。但我必须找到第一个和最后一个非零值来定义边界,问题是我可以找到第一个非零值(rowandcolumn),但在列的最后一个出现值1799,我的图像是499x631x3 uint8,应该是533。有什么问题吗 我的代码如下: %Find where the image begins and starts [r_min, c_min]=find(movingRegistered(:),1,'first'); [r_max, c_max]=f

我遇到了麻烦,因为我有这个图像,我想做的只是处理非黑色的像素。但我必须找到第一个和最后一个非零值来定义边界,问题是我可以找到第一个非零值(rowandcolumn),但在列的最后一个出现值1799,我的图像是499x631x3 uint8,应该是533。有什么问题吗

我的代码如下:

%Find where the image begins and starts
[r_min, c_min]=find(movingRegistered(:),1,'first');
[r_max, c_max]=find(movingRegistered(:,:),1,'last');

图像链接

查找对应于每列第一个非零元素的行索引:

A2 = logical(any(A,3)); %// reduce to 2D array, which equals 0 if all three color
                        %// components are 0, and 1 otherwise
[~, row_first] = max(A2,[],1); %// the second output of `max` gives the row index of
                               %// the first maximum within each column
要查找最后一个:

要查找线性索引意义上的第一个和最后一个:如上所述计算
A2
,并将代码应用于该索引:

[r_min, c_min]=find(A2,1,'first');
[r_max, c_max]=find(A2,1,'last');

是否要查找与每列的第一个和最后一个非零值对应的行?还是周围的路?或者…?我想找到定义图像“矩形”的行和列,其中包含关于图像的信息开始和结束的信息。这些是对我来说唯一重要的像素。请看图片链接。谢谢,但这与我想要的不同。我的图像有一个包含信息的“矩形”,其他部分是黑色的,我只想定义“信息矩形”仅用于该像素。我想要的是所有图像的第一个和最后一个非零值。我不明白为什么我的代码最后给出col_的值1799,如果我的图像是499x631x3 uint8。你有什么建议吗?哦,我明白了。Try
A2=logical(任意(A,3))
并将代码应用于
A2
。我认为这应该行得通
[r_min, c_min]=find(A2,1,'first');
[r_max, c_max]=find(A2,1,'last');