2012-03-23 17 views
5

Chciałbym wiedzieć, jak mogę zrobić filtr dolnoprzepustowy w opencv na IplImage. Na przykład "boxcar" lub coś podobnego.filtr dolnoprzepustowy w opencv

Mam googleed to, ale nie mogę znaleźć jasne rozwiązanie. Jeśli ktoś mógłby dać mi przykład lub wskazać mi w dobrym kierunku, w jaki sposób wdrożyć to w opencv lub javacv byłbym wdzięczny.

Thx z góry.

+0

Nie jestem pewien, co dokładnie masz na myśli. Low-pass zwykle oznacza niskie częstotliwości ... więc masz na myśli pewien koniec spektrum kolorów? – thecoshman

+1

Więcej informacji: http://paulbourke.net/miscellaneous/imagefilter/ – Ojtwist

Odpowiedz

4

Oto przykład przy użyciu API C i IplImage:

#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/highgui/highgui_c.h" 

int main() 
{ 
    IplImage* img = cvLoadImage("input.jpg", 1); 
    IplImage* dst=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3); 
    cvSmooth(img, dst, CV_BLUR); 
    cvSaveImage("filtered.jpg",dst); 
} 

Aby uzyskać informacje o tym, co parametrów funkcji cvSmooth ty można rzucić okiem na cvSmooth Documentation.

Jeśli chcesz użyć maski filtru niestandardowego można użyć funkcji cvFilter2D:

#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/highgui/highgui_c.h" 

int main() 
{ 
    IplImage* img = cvLoadImage("input.jpg", 1); 
    IplImage* dst=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3); 
    double a[9]={ 1.0/9.0,1.0/9.0,1.0/9.0, 
        1.0/9.0,1.0/9.0,1.0/9.0, 
        1.0/9.0,1.0/9.0,1.0/9.0}; 
    CvMat k; 
    cvInitMatHeader(&k, 3, 3, CV_64FC1, a); 

    cvFilter2D(img ,dst, &k,cvPoint(-1,-1)); 
    cvSaveImage("filtered.jpg",dst); 
} 

Te przykłady użycia OpenCV 2.3.1.

3

Dokumentacja openCV filtering jest trochę zagmatwana, ponieważ funkcje te starają się efektywnie pokryć każdą możliwą technikę filtrowania.

Jest tutorial na wykorzystaniu własnych jąder filtrów, które obejmuje filtry skrzynki