Первый пиксель изображения

Я только что отсканировал образец изображения, и я пытаюсь обнаружить первый пиксель, который имеет значение "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 разорвет только внутренний цикл, как уже указывал Даве.

Другие вопросы по тегам