如何使用MATLAB编程获得图像中最小强度的位置

时间:2015-03-03 17:47:18

标签: matlab image-processing minimum

我有一张图片。我想使用MATLAB编程获得并标记该图像中具有最小强度的位置。我还希望获得最小强度值

2 个答案:

答案 0 :(得分:3)

要正确识别图片中 的最低强度,请将调用与minfind结合使用。因此,如果A是您的图片,请执行以下操作:

min_val = min(A(:));
[row,col] = find(A == min_val), 1);

min_val将包含图片中的最小强度。重要的是通过A将矩阵A(:)展开到单个列向量。这样,您可以确保min同时对所有像素值进行操作。在上面的代码中,rowcol将包含找到最小强度的位置和列位置。这种复杂性是,如果您有多个共享相同最小强度的像素,find将返回共享相同强度的所有位置。如果您只想要其中一个,请将1添加为find的第二个参数。

如果你想在图像中标记最小强度的位置,那么只需通过索引来完成:

A(row,col) = 255;

这会将最小强度所在的位置设置为白色或255。

C.Colden的代码也是一个很好的尝试,但如果输入不是矢量(即具有两个以上维度的矩阵或数组),它将无效,因为min将运行沿着第一个非单一维度。这就是您需要将图像展开为单个向量的原因,如上面的代码所示。

如果我们在min中输入矩阵,在您的情况下,min会找到每列的最小值。如果需要,您必须拨打min两次以确定行位置,方法是在第一个min调用找到的列上应用min,但我发现上述代码更具可读性。

但是,出于学术目的,如果您只想使用min,这就是您要做的事情:

[min_col, rows] = min(A); %// Find the minimum among all columns as well as which row for each column gave the minimum
[min_val, col] = min(min_col); %// Now, for each of the minimum values, figure out which column gave us the global minimum as well as the minimum itself
row = rows(col); %// Now find the row location of this global minimum

正如您所看到的,我宁愿坚持使用findmin进行首次尝试....它只是更具可读性。

答案 1 :(得分:0)

您可以使用imreadhttp://ch.mathworks.com/help/matlab/ref/imread.html)加载图片。之后,您可以将图像视为矩阵。因此,如果“A”是您的图片,则可以使用maxhttp://ch.mathworks.com/help/matlab/ref/max.html)或min使用Min_Value = min(A(:))查找值。然后,您可以使用[row,column] = find(A == Min_Value)

在矩阵中搜索Min_Value的位置

示例:

A = [3,2,1;4,5,20;7,8,9];
Min_Value = min(A(:));
[row,column]=find(A == Min_Value);