ПредишенСледващото

2. Преглед на модула разполага imgproc OpenCV библиотека

2.1. Cvertka и линейни филтри

Line филтри - семейството на най-простите филтри с изображения от гледна точка на математическо описание [6]. Да предположим, че има нива на сивото изображение. След това всеки линеен филтър се определя от функция реално ценен определена на растера. Тази функция се нарича филтър ядрото. и операция на филтриране се извършва чрез изчисляване на дискретни извивка:

Обикновено, филтър ядрото се нанася околност на точката 0, така че границите на вариране определя от избраната индекса и формата и размера на махалата. Този квартал в някои източници, наречена модел или блендата. В процеса на изчисляване на намотка се извършва чрез разширяване пиксела на цялото изображение, моделът се наслагва върху всеки пиксел ток чрез изравняване на пикселите с определен модел точка - позицията на водещ модел. и изчисляване на навиване. Можете отделно трябва да се обърне внимание на ситуацията, когато сегашният пиксел, е на ръба на изображението. Този проблем може да бъде решен по няколко начина:

  • Изрежете краищата, т.е. не да се филтрира за всички гранични пиксела, за които е невъзможно да се наложи един модел без да се отклонява от него.
  • Не е взето предвид при сумиране на един пиксел, които в действителност не съществуват.
  • Ние разшири близост до граничните пиксели чрез екстраполация (например простата дублирането на граничните пиксели).
  • Разширяване на определението за съседство на граничните пиксели чрез огледално отражение, т.е. тага за изображение в тор.

Изборът на решение зависи от приложението, така например, огледален образ, на практика, не е съвсем естествен начин.

За да се изчисли извивките в OpenCV библиотека разполага с функция filter2D.

Нека разгледаме параметрите на горната функция.

  • SRC - изображението източник.
  • DST - навиване. Той има същия брой канали и дълбочината на оригиналното изображение.
  • ddepth - дълбочината на полученото изображение. Ако функцията за въвеждане прехвърля отрицателна стойност, дълбочината съвпада с дълбочината на входното изображение.
  • ядрото - Конволюция ядрото, а едноканален недвижими матрица.
  • котва - водещ основна позиция. По подразбиране тя е на стойност (1, 1), което означава, че водещата позиция се намира в центъра на сърцевината.
  • делта - константа, която може да се добави към стойността на интензитета след филтриране преди записа на непосредствен резултат.
  • borderType - параметър определя метода на граничните добавка за да може да приложите филтър към граничните пикселите на оригиналното изображение. Всякакъв вид стойност BORDER_ * освен BORDER_TRANSPARENT и BORDER_ISOLATED.

Функцията осигурява използването на произволен линеен филтър ядро ​​с ядрото на СРС на изображението. филтриране резултат се записва в DST масив. Ако отвора е извън картинката, граничните пиксели се допълват в съответствие с метода, определен в borderType. Новата стойност на интензивността на пиксела изчислява по формулата:

В случай на изображение ядрото многоканален се прилага за всеки канал поотделно.

Ето например функция за filter2D. Представената програма позволява свалянето на изображения и прилагането на линеен филтър с недвижими ядрото определят постоянно ядро. Също така, картографирането се извършва като се започне и в резултат на изображения.

Следващата фигура показва изхода на горната програма (фиг. 7.1. В дясно). Очевидно е, че използването на филтър със сърцевина, определен в програмния код (с удебелен шрифт), води до намаляване в контраст на оригиналния тест изображение (фиг. 7.1. Ляво).

Знайте, Intuit, лекция, операции по обработка на основното изображение


Фиг. 7.1. В резултат на прилагането на филтър

Имайте предвид, че в случай на големи ядра (около 11x11 пиксел размер) се използва за изчисляване на конволюция БПФ, в случай на малки ядра - Онлайн алгоритъм. Също така, ако е отделна сърцевина, т.е. могат да бъдат представени като двойка ядра, които могат да се прилагат последователно към редовете и колоните на изображения отделно, тя осигурява по-ефективно прилагане като се използва линеен филтър функция sepFilter2D. Когато се обадите на тази функция изисква изрична двуизмерни ядра rowKernel и columnKernel.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!