Винеровская фильтрация - PullRequest
6 голосов
/ 02 июля 2011

Я хочу написать фильтр Винера для улучшения изображения. Я не хочу использовать Фурье, я знаю, что есть медиана и дисперсия, основанная на алгоритме, но я не могу его найти. Можете ли вы помочь мне, ребята? http://en.wikipedia.org/wiki/Wiener_filter

1 Ответ

6 голосов
/ 22 июля 2011

Я думаю, это то, что вы ищете. Этот код написан Рэем Джуангом.

пример использования вышеуказанного кода

void main(int argc, char *argv[])
    if (argc <= 1) {
            printf("Usage: %s <image>\n", argv[0]);
            return;
        }

    IplImage *tmp = cvLoadImage(argv[1]);
    IplImage *tmp2 = cvCreateImage(cvSize(tmp->width, tmp->height), IPL_DEPTH_8U, 1);

    cvCvtColor(tmp, tmp2, CV_RGB2GRAY);

    cvNamedWindow("Before");
    cvShowImage("Before", tmp);

    cvWiener2(tmp2, tmp2, 3,3);
    cvNamedWindow("After");

    cvShowImage("After", tmp2);
    //cvSaveImage("C:/temp/result.png", tmp2);
    cvWaitKey(-1);


    cvReleaseImage(&tmp);
    cvReleaseImage(&tmp2);
}
...