在Matlab中有个psf2otf()函数,可以将小尺寸的点扩散函数,扩大尺寸,并作二维傅里叶变换,opencv中没有这个函数,所以编了这么个函数:
/*****************************
Mat psf2otf(const Mat&psf, Size outSize=Size(3,3))
参数说明:
psf——输入的点扩散函数;
outSize——是输出otf的尺寸;
在本程序中,还调用了circShift()函数,该函数具体参见:
http://www.cnblogs.com/phoenixdsg/p/8425336.html
本程序中,还调用了mymax()函数和myMagnitude()函数,难度不大自己想办法吧。
*******************************/
下面是psf2otf()函数的定义:
{
Mat otf;if(countNonZero(psf)&&!psf.empty())
{
Size psfSize=psf.size();
Size paddSize=outSize-psfSize;
copyMakeBorder(psf,otf,paddSize.height/2,paddSize.height/2,
paddSize.width/2 ,paddSize.width/2,
BORDER_CONSTANT,Scalar(0));
circShift(otf,-otf.size().height/2,-otf.si