Как стать автором
Обновить

Комментарии 26

Разве такая же статья не была уже на хабре?
Не могу найти, но помню, о матричных фильтрах была
Может быть вы имели ввиду статью: habrahabr.ru/post/43895/
Но эта статья немного другая, хотя и по близкой тематики.
Да, действительно, она. Теперь вижу разницу.
Была похожая, но про те же нейронные сети целая гора статей на хабре и ничего =)
А вообще эта статья кажется очень даже годная
Спасибо, я старался.
Подобной статьи я не нашёл, поэтому решил опубликовать. Я видел статью «Графические фильтры на основе матрицы скручивания», но она рассказывает только про фильтры на основе матрицы скручивания.
Звучит интересно, но ведь это самые основы. Такая статья хорошо смотрелась бы как начало цикла статей.
Возможно я продолжу публиковать статьи о обработке изображений, так как на русском языке такой информации не много.
Господа, прочтите классику.

Прэтт Уильям. Цифровая обработка изображений
Количество страниц: 781стр.
Формат:djvu.
Издательство «Мир», Москва, 1982г.
Еще добавлю Гонсалеса и Вудса. Вот уж где кладезь теории обработки изображений…
;)
см. мой комментарий к самому топику.
Ссылка на оригинального. Я, даже не обращал внимания, что есть перевод на русский.

Гонзалез и Вуд, оригинале, залит на смарфон, читаю в пробках ;)
А я поставил минус.

Откуда такая терминология?
В классический трудах по обработке изображений введено понятие «свертка».
Это есть взвешенный перевод термина convolution with matrix.

Digital Image Processing, William K. Pratt
Publication Date: April 1991 | ISBN-10: 0471857661 | ISBN-13: 978-0471857662 | Edition: 2

Digital Image Processing 2Ed, Gonzalez and Woods
Prentice Hall | ISBN 0201180758 | 2002 Year
Не могли бы вы подробнее написать, какая именно терминология вам показалась не правильной?
«Матричные фильтры» — какой-то провинциальный новодел
Всегда существовал термин «свертка с окном»

«второй метод» — из вашей статьи, называется аподизация(apodisation), дополнение.
Спасибо.

Насчёт второго, добавлю.
Спасибо!
Пропустил, что этот курс начался
Мне понравилась ваша фраза: «Статья ориентирована, прежде всего, на программистов, занимающихся обработкой изображений.» Хоть бы код какой-нибудь привели.
а есть смысл? код же ну очень простой и безыдейный.
Если приводить код, статья раздулась бы раз в 10 (разве что если бы код был на Matlab/Octave, он занял бы мало места, но это уже не программирование). Одну только свертку можно выполнять «в лоб» (если матрицы небольшие), а можно через преобразование Фурье (что дает хороший выигрыш в производительности, но требует много ресурсов — на GPU так не посчитать).
Хотя, конечно, можно было бы псевдокод использовать…
Быстрое преобразование Фурье считается элементарно даже на втором Пентиуме. Для изучения основ на мой взгляд лучше всего подходит Processing. Вот код функции свертки.

color convolution(int x, int y, float[][] matrix,int matrixsize, PImage img)
{
  float rtotal = 0.0;
  float gtotal = 0.0;
  float btotal = 0.0;
  int offset = matrixsize / 2;
  for (int i = 0; i < matrixsize; i++){
    for (int j= 0; j < matrixsize; j++){
      // What pixel are we testing
      int xloc = x+i-offset;
      int yloc = y+j-offset;
      int loc = xloc + img.width*yloc;
      // Make sure we haven't walked off our image, we could do better here
      loc = constrain(loc,0,img.pixels.length-1);
      // Calculate the convolution
      rtotal += (red(img.pixels[loc]) * matrix[i][j]);
      gtotal += (green(img.pixels[loc]) * matrix[i][j]);
      btotal += (blue(img.pixels[loc]) * matrix[i][j]);
    }
  }
  // Make sure RGB is within range
  rtotal = constrain(rtotal,0,255);
  gtotal = constrain(gtotal,0,255);
  btotal = constrain(btotal,0,255);
  // Return the resulting color
  return color(rtotal,gtotal,btotal);
}
хм… Давно хотел реализовать SURF на плис, но ресурсов для свёртки маловато. что-то я и забыл про свёртку через Фурье
за Лену плюс, но статья все-таки для тех кто еще не занимается обработкой изображений, но интересуется.
Можете объяснить чем линейный фильтр отличается от нелинейного? Почему вы пишете «можно разделить на 2 фильтра» вместо «сепарабельный фильтр»? А знаете как апертура фильтра Гаусса связана с СКО(сигма)?
Про морфологические операции вообще куцо написали. Чем Ваша статья выделяется на фоне книги Гонсалеса?
Извините, но ИМХО статья не соответствует вступительным словам.
>У верхнего левого пикселя не существует «соседа» с права от него, следовательно, нам не на что умножать коэффициент матрицы.

Опечатка? 1. Может «справа»? 2. Нету ведь «соседей» слева и сверху…

Теперь боюсь, что вся статья некорректная.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории