algorytm.org

Filtrowanie obrazów

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Filtrowanie obrazów
Ocena użytkowników:***** / 220
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 15 sierpnia 2007 14:32

Zastosowanie filtrów w przetwarzaniu obrazów oznacza, że do obliczenia nowej wartości punktu brane są pod uwagę wartości punktów z jego otoczenia. Każdy piksel z otoczenia wnosi swój wkład - wagę podczas przeprowadzania obliczeń. Wagi te zapisywane są w postaci maski. Typowe rozmiary masek to 3 x 3, 5 x 5 bądź 7 x 7. Rozmiary masek są z reguły nieparzyste ponieważ piksel na środku reprezentuje piksel dla którego wykonywana jest operacja przekształcania filtrem. Przeanalizujmy filtrację na podstawie filtra o masce 3 x 3.

f-1, -1f0, -1f1, -1
f-1, 0f0, 0f1, 0
f-1, 1f0, 1f1, 1

Wówczas nową wartość składowej punktu a o współrzędnych (i, j) obliczymy według następującego wzoru. Najpierw obliczymy sumę ważoną składowej punktu i wszystkich sąsiadów zgodnie z wagami wskazaymi przez maskę filtra.
s = f_{-1,-1} * a_{i-1,j-1} + f_{0,-1} * a_{i,j-1} + f_{1,-1} * a_{i+1,j-1} +\\\\ f_{-1,0} * a_{i-1,j} + f_{0,0} * a_{i,j} + f_{1,0} * a_{i+1,j} +\\\\ f_{-1,1} * a_{i-1,j+1} + f_{0,1} * a_{i,j+1} + f_{1,1} * a_{i+1,j+1}
Tak otrzymaną sumę dzielimy przez sumę wszystkich wag maski, jeżeli jest ona różna od 0. Ten proces normalizacji wartości składowej punktu zapobiegnie zmianie jasności przetwarzanego obrazu.
a'_{i,j} = \frac{s}{f_{-1,-1} + f_{0,-1} + f_{1,-1} + f_{-1,0} + f_{0,0} + f_{1,0} + f_{-1,1} + f_{0,1} + f_{1,1}}
Filtrację przeprowadza się osobno dla każdej składowej obrazu. Zatem jeżeli mamy obraz reprezentowany w modelu RGB, to wówczas będziemy wykonywać oddzielne przekształcenia dla składowej R, G oraz B.
Jak łatwo zauważyć próba zastosowania filtracji dla punktów położonych na krawędzi obrazu, prowadzi do sytuacji, w której maska "wystaje" poza przetwarzany obraz. Istnieje kilka sposobów obejścia tego problemu. Jednym z nich jest pominięcie procesu filtracji dla takich punktów, innym jest zmniejszenie obrazu po filtracji o punkty, dla których proces ten nie mógł być wykonany. Kolejnym sposobem jest dodanie do filtrowanego obrazu zduplikowanych pikseli znajdujących się na jego brzegu.

Filtry dolnoprzepustowe (ang. low-pass) przepuszczają elementy obrazu o małej częstotliwości. Elementy o wysokiej częstotliwości (szumy, drobne szczegóły) są natomiast tłumione bądź wręcz blokowane. Wynikiem działania takich fitrów jest zredukowanie szumów, w szczególności gdy jest on jedno, dwupikslowy ale również wygładzenie i rozmycie obrazu. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra dolnoprzepustowego:

Filtr dolnoprzepustowy

  • filtr uśredniający - jest podstawowym filtrem dolnoprzepustowym, jego wynikiem jest uśrednienie każdego piksla razem ze swoimi ośmioma sąsiadami.
    111
    111
    111

  • filtr kwadratowy - jego wynikiem jest uśrednienie każdego piksla razem ze swoimi dwudziestoma czteroma sąsiadami, powoduje to odfiltrowanie większej liczby szczegółów jak w przypadku poprzedniego filtra.
    11111
    11111
    11111
    11111
    11111

  • filtr kołowy - jest pewną modyfikacją filtra kwadratowego, kształt jego maski zbliżony jest do koła, jego wynikiem jest uśrednienie każdego piksla razem ze swoimi dwudziestoma sąsiadami - punkty położone w narożnikach mają wagę 0, zatem nie biorą udziału w procesie filtracji.
    01110
    11111
    11111
    11111
    01110

  • LP1 - różni się od filtra uśredniającego zwiększeniem wagi, dla aktualnie przetwarzanego punktu, powoduje to zmniejszenie "efektu rozmycia" w stosunku do filtra uśredniającego.
    111
    121
    111

  • LP2 - różni się od filtra uśredniającego jeszcze mocniejszym zwiększeniem wagi, dla aktualnie przetwarzanego punktu niż filtr LP2.
    111
    141
    111

  • LP2 - różni się od filtra uśredniającego jeszcze mocniejszym zwiększeniem wagi, dla aktualnie przetwarzanego punktu niż filtr LP3.
    111
    1121
    111

  • piramidalny - jeżeli kolejne komórki tego filtra przedstawionoby za pomocą słupków o wysokości odpowiadającej przypisanej wadze to w efekcie otrzymalibyśmy bryłę podobną do piramidy, stąd jego nazwa. Widać tutaj, że znaczenie wartości punktu rośnie wraz ze zmniejszaniem się odległości do obliczanego punktu.
    12321
    24642
    36963
    24642
    12321

  • stożkowy - jeżeli kolejne komórki tego filtra przedstawionoby za pomocą słupków o wysokości odpowiadającej przypisanej wadze to w efekcie otrzymalibyśmy bryłę podobną do stożka, stąd jego nazwa. Znaczenie wartości punktu rośnie wraz ze zmniejszaniem się odległości do obliczanego punktu.
    00100
    02220
    12521
    02220
    00100

  • gauss 1 - jeżeli kolejne komórki tego filtra przedstawionoby za pomocą słupków o wysokości odpowiadającej przypisanej wadze to w efekcie otrzymalibyśmy bryłę podobną do krzywej rozkładu normalnego - krzywej Gaussa. Zatem znaczenie wartości punktu rośnie wraz ze zmniejszaniem się odległości do obliczanego punktu, w sposób opisany przez funkcje Gaussa.
    121
    242
    121

  • gauss 2 - kolejna wersja filtru wykorzystującego funkcję Gaussa.
    11211
    12421
    24842
    12421
    11211

  • gauss 3 - kolejna wersja filtru wykorzystującego funkcję Gaussa.
    01210
    14841
    281682
    14841
    01210

  • gauss 4 - kolejna wersja filtru wykorzystującego funkcję Gaussa.
    14741
    41626164
    72641267
    42616264
    14741

  • gauss 5 - kolejna wersja filtru wykorzystującego funkcję Gaussa.
    1122211
    1224221
    2248422
    24816842
    2248422
    1224221
    1122211

Filtry górnoprzepustowe (ang. high-pass) przepuszczają i wzmacniają elementy obrazu o dużej częstotilości, są to szumy, drobne szczegóły i krawędzie. Tłumieniu natomiast ulegają elementy o niskiej częstotliwości. Wynikiem działania takich fitrów jest wyostrzenie obrazu, a także zwiększenie ilości szumów. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra górnoprzepustowego:

Filtr górnoprzepustowy

  • usuń średnią (ang. mean removal) - jest to podstawowa wersja filtru górnoprzepustowego, jego użycie powoduje znaczne wyostrzenie obrazu, ale także wzmocnienie wszelkich szumów i zakłóceń.
    -1-1-1
    -1 9-1
    -1-1-1

  • HP1 - w porównaniu do poprzedniego filtru, cechuje się mniejszym wyostrzeniem obrazu, nie uwypukla tak bardzo szumów znajdujących się w przetwarzanym obrazie.
    0-10
    -1 5-1
    0-1 0

  • HP2 - w porównaniu do poprzedniego filtru, cechuje się jescze mniejszym wyostrzeniem obrazu.
    1-21
    -2 5-2
    1-2 1

  • HP3 - powoduje najmniejsze z przedstawionych tutaj filtrów górnoprzepustowych wzmocnienie szumów.
    0-10
    -1 20-1
    0-1 0

Filtry przesuwania i odejmowania, wykonują przesunięcie obrazu a następnie odejmowanie obrazu od swojej kopii. Filtry te służą do wykrywania krawędzi w obrazie. W zależności od kierunku przesuwania obrazu będą to krawędzie pionowe, poziome bądź ukośne. Należy zauważyć, że w wyniku działania tego rodzaju filtrów wynikowa wartość składowej punktu może wyjść ujemna. W takim wypadku należy użyć wartości bezwzględnej albo sprowadzić wartość do 0. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra przesuwania i odejmowania:

Filtr przesuwania

  • poziomy - wykonuje przesunięcie obrazu o jeden punkt w kierunku pionowym a następnie odjęcie wartości punktu od jego kopii, w ten sposób wykrywa krawędzie poziome w obrazie.
    000
    -1 1 0
    0 0 0

  • poziomy - wykonuje przesunięcie obrazu o jeden punkt w kierunku poziomym a następnie odjęcie wartości punktu od jego kopii, w ten sposób wykrywa krawędzie pionowe w obrazie.
    0-10
    0 1 0
    0 0 0

  • ukośny - wykonuje przesunięcie obrazu o jeden punkt w kierunku ukośnym a następnie odjęcie wartości punktu od jego kopii, w ten sposób wykrywa krawędzie ukośne / w obrazie.
    -100
    0 1 0
    0 0 0

  • ukośny - wykonuje przesunięcie obrazu o jeden punkt w kierunku ukośnym a następnie odjęcie wartości punktu od jego kopii, w ten sposób wykrywa krawędzie ukośne \ w obrazie.
    00-1
    0 1 0
    0 0 0

Gradientowe filtry kierunkowe (ang. gradient directional) służą również do wykrywania krawędzi w obrazie. Nazwa kolejnych przedstawionych filtrów określa krawędzie- zgodnie z kierunkiem geograficznym, które będą wykryte na obrazie wynikowym. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu gradientowego filtra kierunkowego:

Filtr gradientowy

  • wschód
    -111
    -1-2 1
    -1 1 1

  • południowy-wschód
    -1-11
    -1-2 1
    1 1 1

  • południe
    -1-1-1
    1-2 1
    1 1 1

  • południowy-zachód
    1-1-1
    1-2-1
    1 1 1

  • zachód
    11-1
    1-2-1
    1 1-1

  • północny-zachód
    111
    1-2-1
    1-1-1

  • północ
    111
    1-2 1
    -1-1-1

  • północny-wschód
    111
    -1-2 1
    -1-1 1

Filtry uwypuklające (ang. embossing) wprowadzają złudzenie wypukłości i wklęsłości w miejscach, gdzie w obrazie znajdują się krawędzie - daje to efekt podobny do płaskorzeźby. Nazwa kolejnych przedstawionych filtrów określa krawędzie- zgodnie z kierunkiem geograficznym, które będą uwypuklone w obrazie wynikowym. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra uwypuklającego:

Filtr uwypuklający

  • wschód
    -101
    -1 1 1
    -1 0 1

  • południowy-wschód
    -1-10
    -1 1 1
    0 1 1

  • południe
    -1-1-1
    0 1 0
    1 1 1

  • południowy-zachód
    0-1-1
    1 1-1
    1 1 0

  • zachód
    10-1
    1 1-1
    1 0-1

  • północny-zachód
    110
    1 1-1
    0-1-1

  • północ
    111
    0 1 0
    -1-1-1

  • północny-wschód
    011
    -1 1 1
    -1-1 0

Filtry Laplace'a - stosowane są do wykrywania krawędzi. W porównaniu do innych przedstawionych tutaj filtrów cechuje je wielokierunkowość - wykrywają krawędzie we wszystkich kierunkach. Ponadto dają w efekcie ostrzejsze krawędzie. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra Laplace'a:

Filtr Laplace'a

  • LAPL1
    0-10
    -1 4-1
    0-1 0

  • LAPL2
    -1-1-1
    -1 8-1
    -1-1-1

  • LAPL3
    1-21
    -2 4-2
    1-2 1

  • Laplace'a ukośny
    -10-1
    0 4 0
    -1 0-1

  • Laplace'a poziomy - ograniczony do wykrywania krawędzi poziomych.
    0-10
    0 2 0
    0-1 0

  • Laplace'a pionowy - ograniczony do wykrywania krawędzi pionowych.
    000
    -1 2-1
    0 0 0

Filtry konturowe - służą do wykrywania krawędzi. Podstawowymi filtrami konturowymi są filtry Sobel'a o Prewitt'a. Poniżej znajduje się przykładowy obraz przed (po lewej) i po zastosowaniu filtra konturowego:

Filtr konturowy

  • poziomy filtr Sobel'a - wykrywa krawędzie poziome.
    121
    0 0 0
    -1-2-1

  • pionowy filtr Sobel'a - wykrywa krawędzie pionowe.
    10-1
    2 0-2
    1 0-1

  • poziomy filtr Prewitt'a - wykrywa krawędzie poziome.
    -1-1-1
    0 0 0
    1 1 1

  • pionowy filtr Prewitt'a - wykrywa krawędzie pionowe.
    10-1
    1 0-1
    1 0-1

Filtry statystyczne - wykorzystuje się je podobnie jak przedstawione powyżej filtry liniowe. Wartość wynikowa jednak powstaje nie w wyniku obliczenia sumy ważonej (funkcji splotu) poszczególnych piksli lecz poprzez wybranie wartości odpowiedniego piksla pod maską.

  • filtr medianowy - mediana, to wartość środkowa. Wynikiem działania tego filtru jest wybranie piksla o wartości środkowej wszystkich piksli pod maską, czyli dla filtru 3x3 będzie to taka wartość punktu, że pozostałe 4 punkty mają wartość większą a pozostałe 4 wartość mniejszą. Można do tego zadania użyć algorytm Hoare'a. Filtr medianowy pozwala na eliminacje szumu z obrazu bez znacznego rozmycia obrazu, tak charakterystycznego dla filtrów dolnoprzepustowych.
    Filtr medianowy

  • filtr minimalny - zwany jest także filtrem kompresujacym albo erozyjnym. Jego działanie polega na wybraniu z pod maski punktu o wartości najmniejszej. Jego działanie powoduje zmniejszenie jasnosci obrazu dajace efekt erozji obiektów. Czasem mówi się, że daje on efekt jakby obraz namalowany został przy uzyciu frab olejnych.
    Filtr minimalny

  • filtr maksymalny - zwany jest także filtrem dekompresujacym albo ekspansywnym. Jego działanie polega na wybraniu z pod maski punktu o wartości największej. Jego działanie powoduje zwiększenie jasnosci obrazu dajace efekt powiększania się obiektów.
    Filtr maksymalny

  • filtr Kuwahara - jest filtrem wygładzającym zachowującym krawędzie. W filtrze tym maska dzielona jest na regiony. Dla każdego regionu obliczana jest wartość średnia oraz wariancja (suma kwadratów odchyleń) względem tej wartości. Wynikiem działania filtru jest wartość średnia tego regionu, w którym wariancja jest najmniejsza.
    Najczęsciej w filtrze Kuwahara punkty pod maską dzielone są na 4 regiony. Podział następuje w taki sposób, że krawędzie przylegających do siebie regionów są wspólne. Punkt centralny dla którego obliczany jest wynik występuje w każdym regionie. Przenalizujmy podział na regiony dla maski o rozmiarze 5x5.

    x1x2x3x4x5
    x6x7x8x9x10
    x11x12x13x14x15
    x16x17x18x19x20
    x21x22x23x24x25


    Poniżej kolejne regiony oznaczone są podkresleniem:

    x1x2x3x4x5
    x6x7x8x9x10
    x11x12x13x14x15
    x16x17x18x19x20
    x21x22x23x24x25
    x1x2x3x4x5
    x6x7x8x9x10
    x11x12x13x14x15
    x16x17x18x19x20
    x21x22x23x24x25
    x1x2x3x4x5
    x6x7x8x9x10
    x11x12x13x14x15
    x16x17x18x19x20
    x21x22x23x24x25
    x1x2x3x4x5
    x6x7x8x9x10
    x11x12x13x14x15
    x16x17x18x19x20
    x21x22x23x24x25


    Obliczenia dla regionu pierwszego będą wyglądały następująco:
    s = \frac{x_1 + x_2 + x_3 + x_6 + x_7 + x_8 + x_{11} + x_{12} + x_{13}}{9}\\\\ wariancja = \frac{(s - x_1)^2 + (s - x_2)^2 + (s - x_3)^2 + (s - x_6)^2 + (s - x_7)^2 + (s - x_8)^2 + (s - x_{11})^2 + (s - x_{12})^2 + (s - x_{13})^2}{9}
    Filtr Kuwahara


Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 11
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 3
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 23 sierpnia 2012 14:55
Komentarze
photo
+8 # Marek 2009-11-07 14:56
Świetny art tego właśnie szukałem jestem zachwycony
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Radek 2009-11-21 16:57
ja też
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+4 # Cyg 2009-12-14 18:34
Muchas gracias
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+5 # piter 2009-12-30 22:32
Super artykuł, dzięki niemu napisałem ciekawy kawałek pracy inżynierskiej a mianowicie shadera do filtrowania tekstur :-). Ale jestem teraz z siebie dumny
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # danka 2010-01-17 22:15
Świetny arykuł:-)
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+3 # Stefan 2010-01-28 23:11
trzy dni szukałem o podziałach filtrów... wielkie podziękowanie 8)null
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+1 # aneta 2010-03-04 04:27
doskonałe opracowanie
oby tak dalej
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+1 # Roza 2010-03-12 14:34
Bardzo dobra praca wszystko opisane w sposób jasny i czytelny pomogła mi w zrozumieniu i opracowaniu mojej pracy wielkie dzięki dla autora.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+1 # Waldek 2010-09-26 19:10
Cudownie, cudownie, cudownie!!!
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Krzyś 2010-11-25 13:35
Czy przy filtracji filtrami gradientowymi obrazka monochromatyczn ego (.pgm) mogą wystąpić piksele będące liczbami ujemnymi?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # mn 2011-01-18 23:32
pewnie
ujemnych pikseli nie dostaniesz tylko ujemne wartości jasnosci mozesz to normalizowac od 0-255 dzieje sie tak dlatego ze w masce filtru masz wspolczynniki wieksze od 1 lub ujemne
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Potargany 2011-04-29 22:57
Witam, próbuję uruchomić przykład ale nie mam odpowiednich bibliotek.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # likierek 2011-10-18 14:21
byłabym wdzieczna jakby ktos napisał troszke wiecej na temat filtru kuwahara...byłabym wdzięczna za pomoc...
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # adi 2012-09-13 11:33
wezmy dla przykladu poziomy filtr Sobel'a:
1 2 1
0 0 0
-1 -2 -1
suma = 1+2+1+0+0+0-1-2-1 = 0
wiec obliczajac a' mamy dzielenie przez zero a'=s/suma
ktos wie co w takim przypadku?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # adi 2012-10-03 11:08
dobra juz wiem wtedy nie nalezy wykonywac tego dzielenia i pilnowac aby skladowa piksela nie przekroczyla 255 lub nie zeszla ponizej 0.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Olo 2012-09-21 19:18
Piksel - tego piksela, tych pikseli, tym pikselom.
Nie zmienia to faktu, że artykuł jest znakomity,
pozdrawiam, Olo
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # rofl 2017-03-10 01:07
Cytuję Olo:
Piksel - tego piksela, tych pikseli, tym pikselom.
Nie zmienia to faktu, że artykuł jest znakomity,
pozdrawiam, Olo


tego piksla, tych piksli, tym pikslom. Jak chcesz poprawiać polszczyznę, to się zastanów czy się nie poniżasz :)
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Darek co się dopiero 2012-10-27 21:14
dzięki bardzo, w końcu coś pojaśniało
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Sailor 2012-12-02 01:15
Witam.
Piszę w C funkcję filtrującą i dopóki używam masek o współczynnikach >=0 wszystko gra, ale nie wiem jak zapisać algorytm dla masek ze współczynnikami ujemnymi. Znalazlem w innych źródłach wzór z wykorzystaniem wartości max i min dla danego splotu, ale w efekcie dostaję tylko szum.

Mógłby ktoś łopatologicznie napisać jak postępować w przypadku masek o współczynnikach dodatnio/ujemnych?

Z góry dziękuję!
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Danuta 2013-01-20 20:13
Czy można powiedzieć, że filtry statystyczne nie mają stalej maski?
Taką informację można znaleźć np. w Wikipedii i tak wszyscy napisaliśmy na egzaminie, za co wykladowca dal nam punkty ujemne. Szczerze mówiąc, skoro wartość piksela badanego zależy od jego wartości i jego najbliższego otoczenia oraz zależy w jakim obszarze obrazu filtr dziala, to chyba można powiedzieć, że nie ma stalej maski, a nawet więcej - nie może jej mieć! Czy można prosić o wyjaśnienie tej kwestii? Przepraszam, nie można napisać litery "l" w formularzu, albo coś jest mojej klawiaturze.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+2 # fhuergh 2014-01-01 22:34
Moim zdaniem filtry statystyczne nie mają maski tylko sąsiedztwo. Mówiąc "maska 3x3" mówimy raczej o rozmiarze sąsiedztwa.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # czarny1906 2013-04-07 13:34
A jak to jest z tym, że w niektórych maskach są ujemne wagi? Przecież w RGB kolory mają wartość , więc jeśli gdzieś jest waga "-1" to teoretycznie kolor wtedy powinien mieć wartość np. -143, a to jest spoza przedziału. Jak to jest?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+1 # Harry 2013-05-27 17:43
Ale wartość ta jest sumowana z pozostałymi przemnożonymi elementami i jeśli nawet wtedy wyjdzie poza zakres 0..255 to i tak jest do niego przycinana.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Paweł1 2015-02-05 21:17
Doskonały artykuł, wielkie dzięki !
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Huragan 2016-02-18 12:21
Ciesze się, że w polskim internecie można odnaleźć taki artykuł. :) Pozdrawiam z UMCSu.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Raelmo 2016-03-30 12:08
Mam Bitmapę 2 kolorową ( black-white). Nie mogę znaleźć sensownego sposobu wyczyszczenia na niej błędów. Powiedzmy, że tło jest czarne a na nim jakaś płaszczyzna czarna. Niestety na tej czarnej sa pixele białe a na białęj czarne. Nie pixele bo to by wyło łatwe ale małe obszary. Nie mogę znaleść sposobu na ich sensowne usunięcie.
Operuję na 2 kolorowej bitmapie bo tak jest szybcie zrobienie przekaształceń a dopierow na końcu nanoszę kolory ( taka maska).
Zna ktos sposób-rozwiązanie.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Paweł21 2016-11-22 18:04
Dziękuję bardzo autorowi, bardzo przydatny, czytelny i zrozumiały artykuł :)
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # IKnowImNasty 2017-02-26 21:21
Świetny artukuł! Trochę czasu straciłem na szukaniu algorytmu blura i oto jest
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Adrian 54321 2017-04-06 04:27
Oczywiście świetne, zauważam gauss 5. W praktyce może być potrzebna dokładność, czy korekta, a gauss 5 to funkcja gaussa w macierzy 7x7, w macierzy 1x1 się tego nie zrobi.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz