如何从矩阵中提取子矩阵指数?

时间:2017-11-28 21:27:20

标签: matlab image-processing matrix

我有一张大小为512 * 512的uint16图片。问题是图像全部是黑色的,除了有一个均匀强度为40000的中等物体。这个物体有一个黑洞,我需要提取这个洞的索引。

所以矩阵是全零的形式,在矩阵的某个区域,我们有一个填充了值40000的子矩阵,在这个子矩阵中我们有另一个零子矩阵。该零子矩阵是根据其索引提取的必需子矩阵。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

非常简单的解决方案是使用bwlabel。例如:

>> data = 40000.*[0 0 0 0 0; 0 1 1 1 0; 0 1 0 1 0; 0 1 1 1 0; 0 0 0 0 0]

data =

           0           0           0           0           0
           0       40000       40000       40000           0
           0       40000           0       40000           0
           0       40000       40000       40000           0
           0           0           0           0           0

>> labelMatrix = bwlabel(~data)

labelMatrix =

     1     1     1     1     1
     1     0     0     0     1
     1     0     2     0     1
     1     0     0     0     1
     1     1     1     1     1

>> holeIndex = find(labelMatrix == 2)

holeIndex =

    13

这一成功基于许多假设,例如只有一个明亮的物体和一个洞。更强大的解决方案需要您正在分析的图像示例,并且可能需要对图像进行一些预处理以及使用regionprops等功能来识别图像区域。