分数阶微分,Grumwald-Letnikov定义在图像的数值实现中更为准确:

Gamma函数:

若s(t)的持续期t [a,t],将函数持续期间[a,t]按单位间隔h=1进行等分,得到:

推到一元函数是s(t)的 v 阶分数阶微分差分表达式为:

这n个非零系数只有常数“1”,其他都是n-1个都是分数阶微分阶次的函数。n个系数分别为:

微分近似掩模算子

分数阶微分( 0.1阶 ~ 0.9阶), 则可以检测到或部分检测到那些模糊边界和细微的弱边界, 而且还可以减少图像噪声的增加。

下左图:原图,下右图:0.5阶分数阶微分处理结果(v=0.5)

void CShowPicView::OnFractionalCalculus( ) // 分数阶微积分 灰度图  单通道
{CShowPicDoc* pDoc = GetDocument();CDC* pDC=GetDC();CString str;int  i,j;double temp ;int **g;g = new int *[intHeight];for(i=0; i<intHeight ;i++)g[i]=new int [intWidth];for(j = 0; j < intWidth; j++)for(i = 0; i <intHeight ; i++)g[i][j]=0;double a0 , a1 , a2 ,v= 0.8 ;a0=1;  a1=-v; a2=(-v)*(-v+1)/2;double temp_1=(8+4*v*v-12*v);for(j = 2; j < intWidth-2; j++)for(i = 2; i <intHeight-2 ; i++){temp = a2*(Data[i-2][j-2]+Data[i-2][j]+Data[i-2][j+2]+Data[i][j-2]                 +Data[i][j+2]+Data[i+2][j-2]+Data[i+2][j]+Data[i+2][j+2]);temp+= a1*(Data[i-1][j-1]+Data[i-1][j]+Data[i-1][j+1]+Data[i][j-1]                 +Data[i][j+1]+Data[i+1][j-1]+Data[i+1][j]+Data[i+1][j+1]);temp+= 8*a0*Data[i][j];temp = temp/ temp_1;if(temp<0)temp=0;g[i][j] = (int)temp;pDC->SetPixel(j+intWidth,i,RGB(g[i][j],g[i][j],g[i][j]));}for(j = 0; j < intWidth; j++)for(i = 0; i <intHeight ; i++)Data[i][j]=g[i][j];for(i=0; i<intHeight ;i++)delete [] g[i];delete []g;ReleaseDC(pDC);}void CShowPicView::OnFractionalCalculusRGB()  // 分数阶微积分RGB
{CShowPicDoc* pDoc = GetDocument();CDC* pDC=GetDC();CString str;int  i,j;double temp_R , temp_G , temp_B  ;int **g;g = new int *[intHeight];for(i=0; i<intHeight ;i++)g[i]=new int [intWidth];double  **m_imgData_R, **m_imgData_G, **m_imgData_B ;double **I_enhanced_R ,  **I_enhanced_G ,  **I_enhanced_B ;m_imgData_R=new double *[intHeight];m_imgData_G=new double *[intHeight];m_imgData_B=new double *[intHeight];I_enhanced_R=new double *[intHeight];I_enhanced_G=new double *[intHeight];I_enhanced_B=new double *[intHeight];for(i=0; i<intHeight; i++){m_imgData_R[i] = new double [intWidth];m_imgData_G[i] = new double [intWidth];m_imgData_B[i] = new double [intWidth];I_enhanced_R[i] = new double [intWidth];I_enhanced_G[i] = new double [intWidth];I_enhanced_B[i] = new double [intWidth];}for(j = 0; j < intWidth; j++)for(i = 0; i < intHeight ; i++){m_imgData_R[i][j]=pDoc->pic[i][j][0];m_imgData_G[i][j]=pDoc->pic[i][j][1];m_imgData_B[i][j]=pDoc->pic[i][j][2];I_enhanced_R[i][j]=pDoc->pic[i][j][0];I_enhanced_G[i][j]=pDoc->pic[i][j][1];I_enhanced_B[i][j]=pDoc->pic[i][j][2];g[i][j]=0;}double a0 , a1 , a2 , v= 0.3;a0=1;  a1=-v; a2=(-v)*(-v+1)/2;double temp_1=(8+4*v*v-12*v);for(j = 2; j < intWidth-2; j++)for(i = 2; i <intHeight-2 ; i++){temp_R = a2*(pDoc->pic[i-2][j-2][0]+pDoc->pic[i-2][j][0]+pDoc->pic[i-2][j+2][0]+pDoc->pic[i][j-2][0]                       +pDoc->pic[i][j+2][0]+pDoc->pic[i+2][j-2][0]+pDoc->pic[i+2][j][0]+pDoc->pic[i+2][j+2][0]);temp_G = a2*(pDoc->pic[i-2][j-2][1]+pDoc->pic[i-2][j][1]+pDoc->pic[i-2][j+2][1]+pDoc->pic[i][j-2][1]                       +pDoc->pic[i][j+2][1]+pDoc->pic[i+2][j-2][1]+pDoc->pic[i+2][j][1]+pDoc->pic[i+2][j+2][1]);temp_B = a2*(pDoc->pic[i-2][j-2][2]+pDoc->pic[i-2][j][2]+pDoc->pic[i-2][j+2][2]+pDoc->pic[i][j-2][2]                       +pDoc->pic[i][j+2][2]+pDoc->pic[i+2][j-2][2]+pDoc->pic[i+2][j][2]+pDoc->pic[i+2][j+2][2]);temp_R += a1*(pDoc->pic[i-1][j-1][0]+pDoc->pic[i-1][j][0]+pDoc->pic[i-1][j+1][0]+pDoc->pic[i][j-1][0]                       +pDoc->pic[i][j+1][0]+pDoc->pic[i+1][j-1][0]+pDoc->pic[i+1][j][0]+pDoc->pic[i+1][j+1][0]);temp_G += a1*(pDoc->pic[i-1][j-1][1]+pDoc->pic[i-1][j][1]+pDoc->pic[i-1][j+1][1]+pDoc->pic[i][j-1][1]                       +pDoc->pic[i][j+1][1]+pDoc->pic[i+1][j-1][1]+pDoc->pic[i+1][j][1]+pDoc->pic[i+1][j+1][1]);temp_B += a1*(pDoc->pic[i-1][j-1][2]+pDoc->pic[i-1][j][2]+pDoc->pic[i-1][j+1][2]+pDoc->pic[i][j-1][2]                       +pDoc->pic[i][j+1][2]+pDoc->pic[i+1][j-1][2]+pDoc->pic[i+1][j][2]+pDoc->pic[i+1][j+1][2]);temp_R += 8*a0*pDoc->pic[i][j][0];temp_R = temp_R/ temp_1;if(temp_R<0)temp_R=0;else if(temp_R>255)temp_R=255;temp_G += 8*a0*pDoc->pic[i][j][1];temp_G = temp_G/ temp_1;if(temp_G<0)temp_G=0;else if(temp_G>255)temp_G=255;temp_B += 8*a0*pDoc->pic[i][j][2];temp_B = temp_B/ temp_1;if(temp_B<0)temp_B=0;else if(temp_B>255)temp_B=255;I_enhanced_R[i][j]=(int)temp_R;I_enhanced_G[i][j]=(int)temp_G;I_enhanced_B[i][j]=(int)temp_B;pDC->SetPixel(j+intWidth,i,RGB(I_enhanced_R[i][j],I_enhanced_G[i][j],I_enhanced_B[i][j]));}for(j = 0; j < intWidth; j++)for(i = 0; i <intHeight ; i++){pDoc->pic[i][j][0]=I_enhanced_R[i][j];pDoc->pic[i][j][1]=I_enhanced_G[i][j];pDoc->pic[i][j][2]=I_enhanced_B[i][j];}for(i=0; i<intHeight ;i++)delete [] g[i];for(i=0; i<intHeight; i++){delete [] m_imgData_R[i];delete [] m_imgData_G[i];delete [] m_imgData_B[i];delete [] I_enhanced_R[i];delete [] I_enhanced_G[i];delete [] I_enhanced_B[i];}delete m_imgData_R;delete m_imgData_G;delete m_imgData_B;delete   I_enhanced_R ;delete   I_enhanced_G ;delete   I_enhanced_B ;ReleaseDC(pDC);  delete []g;ReleaseDC(pDC);}

原图,0.5阶增强效果

最近有网友问我:直接把程序copy到vc里面,为什么运行不了?

答:那是当然运行不了,只是提供了分数阶微分的部分代码,并没有上传全部代码,需要把代码相应的接口修改并放到自己的代码里面才能运行。所以索性把所有的代码都打包上传,想要的自己下载吧。

链接: https://pan.baidu.com/s/16y6g_HWQk6oin3k8MLilzg 提取码: a2ah

图像增强-分数阶微分(vc++)相关推荐

  1. MATLAB求分数阶微分的数值解,G-L定义,R-L定义,Caputo定义

    分数阶微积分学是整数阶微积分学的直接拓展,将一阶导数.二阶导数.一重积分.二重积分等整数阶微积分拓展到0.75阶导数.阶导数等实数甚至是复数阶的导数或积分.这无疑拓展了微积分学的深度. 对于整数阶微积 ...

  2. 利用2阶分数阶微分掩模的边缘检测(Matlab代码实现)

  3. 基于分数阶的图像边缘细节检测

    1 分数阶微分理论 分数阶微分几乎和整数阶微分同时诞生,但由于一直没有常见的物理现象能够解释这一数学表达式的含义,所以其也未被广泛运用.几个世纪以来,虽然分数阶微分理论得到了长足的发展,但至今没有统一 ...

  4. matlab 分数阶混沌系统的完全同步控制

    1.内容简介 略 625-可以交流.咨询.答疑 2.内容说明 分数阶微积分这一重要的数学分支,其诞生在1695年,几乎和经典微积分同时出现.那一年,德国数学家Leibniz 和法国数学家L'Hopit ...

  5. 论文总结2:分数阶傅里叶变换在信号检测与图像处理中的应用研究

    分数阶傅里叶变换在信号检测与图像处理中的应用研究(李琼) 发展历史 特性 二维分数阶傅里叶变换 基于分数阶傅里叶变换的图像分析 分数阶变换域中图像的能量分布 分数阶傅里叶变换域中的图像的幅度和相位信息 ...

  6. 分数阶傅立叶变换程序汇总(转载)

    转载链接http://forum.vibunion.com/forum.php?mod=viewthread&action=printable&tid=41561 声振论坛 标题: 分 ...

  7. 【控制】基于灰狼算法改进分数阶PD滑模控制器附matlab代码

    1 内容介绍 分数微积分已经被研究了将近 3 个世纪,并且已 经被科学家广泛应用到科学与控制工程领域中.分 数阶 PID 控制系统是由斯洛伐克学者 Podlubny于 1994 年提出,并应用于分数阶 ...

  8. 分数阶累加的Python实现

    分数阶累加的Python实现 分数阶累加是分数阶差分的逆运算,它不仅可用于分数阶差分方程的分析 ,也可以用于建立分数阶灰色模型.然而许多初学者在动手实现分数阶灰色模型时经常发现非常困难,究其原因其实是 ...

  9. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第9章-不确定分数阶系统的包含控制

    第8章 回到目录 第10章 第9章-不确定分数阶系统的包含控制 9.1 引言 9.2 问题描述 9.3 不确定分数阶多智能体系统的包含控制分析 9.3.1 基于状态控制器的包含控制 9.3.2 基于输 ...

最新文章

  1. CentOS下Redis的安装
  2. java项目端口号异常_Pyspark:异常:Java网关进程在向驱动程序发送其端口号之前退出...
  3. 差分约束系统【模板】
  4. [SQL Server]树形结构的创建
  5. Android之三大图片缓存原理、特性对比
  6. c++ 中文乱码_Visual Studio Code 中 CodeRunner 插件的输出窗口中文乱码
  7. Qt文档阅读笔记-QSet官方解析及实例
  8. 博弈——通过博弈思想解决的问题(hdu1847,2147)
  9. run (牛客多校第二场)计数DP
  10. 考研英语一和英语二的区别
  11. js正则及常用方法函数总结
  12. iOS:Reachability网络监听
  13. 计算机没有无线网卡驱动程序,win10系统的无线网卡驱动没了的解决方法
  14. 计算机配置很高 但是很卡,电脑配置高但很卡_电脑配置很高但还是很卡是怎么回事啊?...
  15. 最佳现代设计必备衬线字体
  16. uniapp中上传图片到OSS服务器,上传图片upload修改为同步请求、以及h5和APP端压缩图片
  17. 【题目】[USACO5.2]蜗牛的旅行Snail Trails
  18. 微信小程序自制底部菜单栏
  19. 原生安卓开发!最详细的解释小白也能听懂,全网独家首发!
  20. item_history_price - 获取京东商品历史价格信息

热门文章

  1. UUID - 通用唯一识别码
  2. Eloqua与微信全面集成,引领数字营销新浪潮
  3. golang中的io.Reader/Writer
  4. 广东未来科技:敢为人先 引领立体显示事业全真时代
  5. 奋斗的一生(谨以此文献给自己和所有正在奋斗的人!)
  6. CAD(dxf)、SHP、KML数据加载并套合到卫星图像上(坐标校准)
  7. 美国2016-2045新科技趋势报告
  8. 2023 年第一弹, Flutter 3.7 发布啦,快来看看有什么新特性
  9. Elasticsearch工作原理
  10. 基于StyleGAN的Face-Morphing