在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.size().width/2);

otf=fft(otf);//计算psf的元素个数

int nElem=psf.cols*psf.rows;double nOps=0;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[2];

split(otf,planes);double imagin_max=mymax(abs(planes[1]));double mag_max=mymax(myMagnitude(otf));if((imagin_max/mag_max)

}returnotf;

}

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

intmain()

{

Mat mat=(Mat_(3,3)<<

0,-1,0,-1,4,-1,0,-1,0);

Mat otf=psf2otf(mat);

cout<

}

输出结果如下:

原文:https://www.cnblogs.com/phoenixdsg/p/9058044.html

matlab中psf2otf作用,Matlab中psf2otf()函数在opencv中的实现相关推荐

  1. abs在c 语言中的作用是什么,abs()函数以及C ++中的示例

    C ++abs()函数 abs()函数是cmath标头的库函数,用于查找给定数字的绝对值,它接受一个数字并返回绝对值. 注意: abs()函数也在头文件中声明,但它与整数值兼容,在C ++ 11中,a ...

  2. python中rand函数是什么意思_科学网-Python中*和**作用及随机数产生函数 np.random.rand()/numpy.random.unifo...-张伟的博文...

    [第一部分] Python中的 * 和 ** ,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的! 一. 打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整 ...

  3. matlab数学建模作用,matlab数学建模基础

    1.数据的导入和保存 1.1数据的导入 matlab中导入数据的函数通常为load load matlab.mat matlab中常用的导入数据的函数为importdata,用法如下: importe ...

  4. matlab双引号作用,matlab中单引号(')的含义是什么,以及如何将其改为python

    简短回答: MATLAB中的'算子是矩阵(共轭)转置算子.它使矩阵在维度上翻转,并得到矩阵的复共轭(第二部分是使人困惑的部分),简单的回答是,在Python中,a'的等价物是np.atleast_2d ...

  5. 图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 距离变换的定义是计算一个图像中非零像素点到最近的 ...

  6. c语言中怎么调用自己定义的函数,c语言中怎么调用自己定义的函数?

    一,函数调用的一般形式为: 函数名(实参列表); 实参可以是常数.变量.表达式等,多个实参用逗号,分隔. 在C语言中,函数调用的方式有多种,例如: 在函数调用中还应该注意的一个问题是求值顺序的问题.所 ...

  7. 桌面中计算机作用,云桌面技术在计算机机房管理中的作用研究

    林朝晖 摘   要:对于探讨云桌面技术在计算机机房管理中作用,文章首先分析云桌面技术的内涵和应用优势,然后分析云桌面技术在计算机机房管理中的作用,包括:设计思路作用.系统虚拟化软件和软件服务云的作用. ...

  8. matlab里subsystem作用,matlab中的subsystem是什么,怎么建立?

    是MATLAB子系统!请点击以下地址查看 http://www.91xiu.com/edu/f/2008/12/29/4289.shtmlMatlab 子系统的创建.装帧及受控执行 2008-10-2 ...

  9. python中round作用,python的round函数的解释

    0x01 round的疑问 简单测试round函数,有些情况会让你很疑惑. 为啥四舍五入有时候不起作用, 这涉及到的底层浮点数保存的问题.学习过逆向或者汇编的话, 都知道浮点数的精度问题. 0x02 ...

  10. fclose在c语言中的作用,c语言fcloseall函数用法实例介绍

    c语言fcloseall函数用法实例介绍.fcloseall函数的返回值,函数 fcloseall() 将所有打开的流与其底层的文件或功能集合关闭.任何缓冲的数据都将首先被写入,使用 fflush(3 ...

最新文章

  1. Comperhend the OP-sizeof deeply!
  2. BLE 绑定流程(转自襄坤在线)
  3. HBase Shell基本操作
  4. 机器学习A-Z~简单线性回归
  5. java equals比较_Java中equals()和==的比较
  6. Html5中Canvas(画布)的使用
  7. 源码安装 nginx 并设置为 service
  8. latex放一张大图在作者和正文之间
  9. linux ftp下载geo,GEO数据下载及处理详细过程
  10. WebRTC-NACK、Pacer和拥塞控制和FEC
  11. Excel 简单线性回归图表制作
  12. 在c语言中出现的int错误类型,【揭秘】C语言类型转换时发生了什么?
  13. spicy(三)compiling analyzers
  14. vmware 网络不可达
  15. python开发对电脑要求高吗_学python对电脑配置有要求么
  16. 实验室设计SICOLAB第三方检测中心实验室设计
  17. keep-alive原理
  18. 进化算法--遗传算法
  19. 【ASP.NET】Global.asax与Web.config
  20. 关于Chrome浏览器瀑布流

热门文章

  1. C++ Concurrency in Action 2nd Edition
  2. 顾沛《抽象代数》2.0环、子环和商环习题解答
  3. MySQL数据库W版与L版转换_mysql博文总结
  4. ATM(异步传输模式)
  5. css html文字淡入淡出,Css淡入淡出
  6. Centos6 安装yum
  7. java 将pdf文件转成高清图片(多张合并成一张)
  8. [INFO1110课件讲解 一] USYD悉尼大学INFO1110 ED lessons Week1 课件 作业 assignment讲解
  9. postfix邮件服务器迁移,记一次搭建Postfix邮件服务器(上篇)
  10. 爱情 何为爱情(搜集)