有没有办法用OpenCV进行反卷积?
我对这里显示的改进印象深刻
并希望将此功能也添加到我的软件中。
编辑(悬赏的附加信息。)
我仍然没有弄清楚如何实现反卷积。
这段代码有助于我提高图像的清晰度,但是我认为反卷积可以做得更好。
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年开始的,因此它可能已过时。