2012-03-23 13 views
5

私は、IplImageのopencvでローパスフィルタをどのように行うことができるか知りたいと思います。 たとえば、「boxcar」またはそれに類するもの。opencvのローパスフィルタ

私はそれを見つけましたが、私は明確な解決策を見つけることができません。 opencvやjavacvでこれを実装する方法について、誰かが私に例を挙げたり、正しい方向で私を指摘してくれたら、私は感謝しています。

Thxです。

+0

正確に何を意味するのかわかりません。ローパスは通常低い周波数を意味します...それであなたはカラースペクトルの特定の終わりを意味しますか? – thecoshman

+1

詳細情報:http://paulbourke.net/miscellaneous/imagefilter/ – Ojtwist

答えて

4

をカバーして、独自のフィルタカーネルを使用して上のtutorialはCのAPIとIplImageへの使用例である:あなたがcvSmooth関数のどのパラメータについては

#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); 
} 

cvSmooth Documentationをご覧ください。

カスタムフィルタマスクを使用する場合は、機能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); 
} 

これらの例は、OpenCVの2.3.1を使用します。

3

このドキュメントでは、可能なすべてのフィルタリング手法を効果的に試しているため、少し混乱しています。

ここでボックスフィルタに