在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/,paddSize.height/,
paddSize.width/ ,paddSize.width/,
BORDER_CONSTANT,Scalar());
circShift(otf,-otf.size().height/,-otf.size().width/);
otf=fft(otf);
//计算psf的元素个数
int nElem=psf.cols*psf.rows; double nOps=; int nfft=nElem/psfSize.width;
nOps +=nfft+psfSize.width*log2(psfSize.width)*nfft;
nfft=nElem/psfSize.height;
nOps +=nfft+psfSize.width*log2(psfSize.height)*nfft;
//将复数otf分解成实部real和虚部imagin
Mat planes[];
split(otf,planes);
double imagin_max=mymax(abs(planes[]));
double mag_max=mymax(myMagnitude(otf)); if((imagin_max/mag_max)<eps)
return planes[]; }
return otf;
}

下面是对该函数的测试程序:

int main()
{
Mat mat=(Mat_<double>(,)<<
,-,,
-,,-,
,-,);
Mat otf=psf2otf(mat);
cout<<otf<<endl;
return ;
}

输出结果如下:

最新文章

  1. asp.net core 如何在Controller获取配置文件的值
  2. CSharpGL(0)一个易学易用的C#版OpenGL
  3. mysql 正则
  4. o2o的一些看法
  5. iOS之文本属性Attributes的使用
  6. 转---在ASP.NET MVC中实现登录后回到原先的界面
  7. NVL函数(NVL,NVL2,NULLIF,COALESCE)
  8. 有感于NC的强大
  9. .NET WIN7+IIS 7.5下URLRewriter组件伪静态设置
  10. Delphi 的动态数组
  11. 返璞归真 asp.net mvc (5) - Action Filter, UpdateModel, ModelBinder, Ajax, Unit Test
  12. leetcode — pascals-triangle
  13. Django基础-01
  14. windows7 安装pytorch
  15. qnx spi 学习笔记
  16. Hibernate 二(一级缓存,多表设计之一对多)
  17. SharePoint 2013 Workflow Manager 1.0 卸载
  18. NodeJS的url验证库模块url-valid
  19. 两数据库Dblink数据抽取blob
  20. AngularJS学习 之 创建项目

热门文章

  1. CMD命令集锦
  2. 报表开发工具!DevExpress Reporting v19.1:WPF/Web平台报表
  3. json_decode 和 json_encode 区别
  4. linux编译esp8266
  5. 去除弹窗自带url提示
  6. LCA离线Tarjan,树上倍增入门题
  7. noi.ac #543 商店
  8. mysql清表时有外键关联处理办法
  9. 2.微服务开发框架——Spring Cloud
  10. python中的定时器threading.Timer