Алгоритм сдвига двоичных изображений - PullRequest
2 голосов
/ 24 мая 2011

Я ищу простой алгоритм резки. Изображение для сдвига является двоичным (0 - фоновые пиксели, 1 - передние пиксели), представленное двумерным массивом. Он будет использоваться для коррекции наклонов рукописных цифр, поэтому сдвиг необходимо выполнять только по оси x.

Я нашел некоторые математические объяснения, но не уверен, как правильно его реализовать.

Спасибо!

1 Ответ

3 голосов
/ 24 мая 2011

Просто переберите строки, начиная с нижней строки, и следите за текущим сдвигом пикселей по оси x (как число с плавающей или фиксированной точкой).После каждого ряда вы увеличиваете смещение на желаемый постоянный наклон.Для целей рисования вы берете ближайшее целое число соответствующего сдвига пикселей в каждой строке.

В псевдокоде это будет:

slope = 0.2; // one pixel shift every five rows
shift = 0.0; // current pixelshift along x-axis
for (row = rows-1; row>=0; row--) {
  integershift = round(shift)  // round to nearest integer
  for (column = columns-1; column>=0; column--) {
    sourcecolumn = column + integershift;  // get the pixel from this column
    if (sourcecolumn < columns)
      outputImage[row][column] = inputImage[row][sourcecolumn];
    else  // draw black if we're outside the inputImage
      outputImage[row][column] = 0;
  }
  shift += slope;
}

Это в основном алгоритм рисования линий Брезенхема , поэтому вы должны найти множество деталей для реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...