Первый пиксель изображения
Я только что отсканировал образец изображения, и я пытаюсь обнаружить первый пиксель, который имеет значение "0" в двоичном изображении. Я использовал краску, чтобы написать текст, и когда я использовал следующую прогу, она всегда ловит самый нижний пиксель.
clear all;
x=imread('textjay.png');
y=im2bw(x);
height=size(y,1); % row
width=size(y,2); % col
valueoftheindex=0;
pixel_value=0;
for i=1:width
for j=1:height
pixel_value=y(j,i);
if (pixel_value==0)
valueofthewidth=i;
valueofthehieght=j;
break
end
end
end
valueofthewidth
valueofthehieght
imtool(y)
1 ответ
Решение
Это во многом зависит от того, что вы считаете "первым пикселем". Предполагая, что вы можете жить с порядком пикселей, который присваивает MATLAB, вы можете использовать
idx = find(y == 0, 1, 'first')
[row_idx, col_idx] = ind2sub(size(y), idx)
Для других показателей "первостепенности" вам придется либо транспонировать входную матрицу (изображение), либо прибегнуть к более изощренному способу расчета.
И да, break
разорвет только внутренний цикл, как уже указывал Даве.