matlab image uint8数组,找到最左/上/下/右像素位置

时间:2011-12-05 18:32:53

标签: image-processing matlab

如何使用uint8阵列保存图像数据?假设我有一个模糊的圆形图像,而不是一个矩形,因此圆圈之外没有像素数据。如何进入最顶部的像素位置?最底部?等等......这个图像不一定是一个圆圈,它可能是一个模糊和非几何的东西。

2 个答案:

答案 0 :(得分:8)

将图像加载到行x列x RGB的数组中。 假设缺少的像素是零,这里是顶部/底部/左/右坐标:

[top_col, top_row]= find(sum(I,3)', 1);
[bottom_col, bottom_row]= find(sum(I,3)', 1, 'last');
[left_row, left_col]= find(sum(I,3), 1);
[right_row, right_col]= find(sum(I,3), 1, 'last');

答案 1 :(得分:1)

我认为你应该使用sparse矩阵来存储你的图像。 它只会将像素存储在您想要的位置。

稀疏矩阵的存储方式如下:

  • 值列表。 v
  • c的开头列表,以便所有值v(c(i):(c(i+1)-1))属于列i
  • 行索引列表r,以使值v(j)的行为r(j)