有没有办法用OpenCV进行反卷积?

我对这里显示的改进印象深刻

c++ - 用OpenCV反卷积?-LMLPHP

并希望将此功能也添加到我的软件中。

编辑(悬赏的附加信息。)

我仍然没有弄清楚如何实现反卷积。
这段代码有助于我提高图像的清晰度,但是我认为反卷积可以做得更好。

void ImageProcessing::sharpen(QImage & img)
{
    IplImage* cvimg = createGreyFromQImage( img );
    if ( !cvimg ) return;

    IplImage* gsimg = cvCloneImage(cvimg );
    IplImage* dimg = cvCreateImage( cvGetSize(cvimg), IPL_DEPTH_8U, 1 );
    IplImage* outgreen = cvCreateImage( cvGetSize(cvimg), IPL_DEPTH_8U, 3 );
    IplImage* zeroChan = cvCreateImage( cvGetSize(cvimg), IPL_DEPTH_8U, 1 );
    cvZero(zeroChan);

    cv::Mat smat( gsimg, false );
    cv::Mat dmat( dimg, false );

    cv::GaussianBlur(smat, dmat, cv::Size(0, 0), 3);
    cv::addWeighted(smat, 1.5, dmat, -0.5 ,0, dmat);
    cvMerge( zeroChan, dimg, zeroChan, NULL, outgreen);

    img = IplImage2QImage( outgreen );
    cvReleaseImage( &gsimg );
    cvReleaseImage( &cvimg );
    cvReleaseImage( &dimg );
    cvReleaseImage( &outgreen );
    cvReleaseImage( &zeroChan );
}

希望有有用的提示!

最佳答案

当然,您可以使用OpenCV编写反卷积代码。但是还没有可以使用的功能。

首先,您可以查看this Example,该文件显示了使用OpenCV在Python中实现Wiener Deconvolution的实现。

这是使用C的another Example,但这是从2012年开始的,因此它可能已过时。

09-25 18:44