MSRCRGIMP(基于GIMP版本的多尺度Retinex)

C++原型:

void __stdcall MSRCRGIMP(unsigned char *Src, unsigned char *Dest, int Width, int Height, int Stride, float MaxScale, int ScaleAmount, float Dynamic)

C#声明:

[DllImport("ImageProcessing.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
internal static extern void MSRCRGIMP(byte* Src, byte* Dest, int Width, int Height, int Stride, float MaxScale, int ScaleAmount, float Dynamic);

VB.NET声明:

<DllImport("ImageProcessing.dll", CallingConvention := CallingConvention.StdCall, CharSet := CharSet.Unicode, ExactSpelling := True)> _
Friend Shared Sub MSRCRGIMP(ByVal Src As IntPtr, ByVal Dest As IntPtr, ByVal Width As Integer, ByVal Height As Integer, ByVal Stride As Integer, ByVal MaxScale As Single, Byval ScaleAmount as Single, Byval Dynamic as Single) 
End Sub

VB6.0声明:

Private Declare Sub MSRCRGIMP Lib "ImageProcessing" (ByVal Src As Long, ByVal Dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal Stride As Long, ByVal MaxScale As Single, Byval ScaleAmount as long, Byval Dynamic as Single)

函数说明:

复制代码
/// <summary>
///  实现功能:带色彩恢复的多尺度Retinex图像增强。
///  参考论文:A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes
///  参考代码:Contrast-Retinex.c in Gimp. 
/// </summary>
/// <param name="Src">源图像数据在内存的起始地址。</param>
/// <param name="Dest">目标图像数据在内存的起始地址。</param>
/// <param name="Width">源和目标图像的宽度。</param>
/// <param name="Height">源和目标图像的高度。</param>
/// <param name="Stride">源和目标图像的扫描行大小。</param>
/// <param name="MaxScale"> 最大的尺度,建议范围[16-500]。 </param>
/// <param name="ScaleAmount"> 多尺度的数量,有效范围[1-8],为1时则为SSR。. </param>
/// <param name="Dynamic"> 调整图像对比度的参数,数字小则对比度强,建议范围[0.1, 4]。</param>
/// <remarks> 1: 只能处理8位或者24位图像。</remarks>
/// <remarks> 2: Src和Dest可以相同,相同和不同时速度无差异。</remarks>
/// <remarks> 3: 主要的耗时是高斯模糊部分,其他的计算量不大。</remarks>
复制代码

算法效果:

    \

   

 

   

   

   

   

   

   

   

   

算法适用的对象:

  对于水下图像,或者整体偏色的图像有的较为明显的效果。能够有很好的纠正偏色的能力。对于整体偏暗的图也有较为明显的动态扩展作用。不适用于正常图像的增强。

处理速度:

  I3  M380 2.53GHZ 笔记本上测试:100万像素、ScaleAmount = 3时,用时250ms。

代码情况:

       代码本身不好并行了,但内部的高斯模糊适合并行。

posted @   Imageshop  阅读(2652)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示