matlab image uint8 Массив, находящий самое верхнее положение левого / верхнего / нижнего / правого пикселя - PullRequest
1 голос
/ 05 декабря 2011

Как данные изображения сохраняются в массиве uint8?Скажем, у меня есть нечеткое круглое изображение вместо прямоугольного, так что за кругом нет данных о пикселях.Как мне выбрать самое верхнее местоположение пикселя?Самый нижний?И т.д. ... И это изображение не обязательно должно быть кругом, оно может быть чем-то неясным и не геометрическим.

Ответы [ 2 ]

8 голосов
/ 06 декабря 2011

Изображение загружается в массив строк 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 голос
/ 05 декабря 2011

Я думаю, вы должны использовать sparse матрицы для хранения вашего изображения. Он будет хранить пиксели только в том месте, где вы хотите.

Разреженные матрицы хранятся так:

  • список значений. v
  • список начала столбцов c, так что все значения v(c(i):(c(i+1)-1)) принадлежат столбцу i
  • список индексов строк r, такой что строка значения v(j) равна r(j)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...