AutoLevel(自动色阶)

C++原型:

void __stdcall AutoLevel(unsigned char *Src, unsigned char *Dest, int Width, int Height ,int Stride, double CutLimit = 0.001)

C#声明:

[DllImport("ImageProcessing.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
internal static extern void AutoLevel(byte* Src, byte *Dest, int Width, int Height, int Stride, double CutLimit = 0.001);

VB.NET声明:

<DllImport("ImageProcessing.dll", CallingConvention := CallingConvention.StdCall, CharSet := CharSet.Unicode, ExactSpelling := True)> _
Friend Shared Sub AutoLevel(ByVal Src As IntPtr, ByVal Dest As IntPtr, ByVal Width As Integer, ByVal Height As Integer, ByVal Stride As Integer, ByVal CutLimit As Double) 
End Sub

VB6.0声明:

Private Declare Sub AutoLevel Lib "ImageProcessing" (ByVal Src As Long, ByVal Dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal StrideAs Long, ByVal CutLimit As Double)

函数说明:

复制代码
/// <summary>
/// "自动色阶"分析照片并校正亮度方面的问题,如由于过度曝光或曝光不足导致照片缺乏细节。使用了汇编层次的优化。(2014.9.4日)
/// </summary>
/// <param name="Src">源图像数据在内存的起始地址。</param>
/// <param name="Dest">目标图像数据在内存的起始地址。</param>
/// <param name="Width">源和目标图像的宽度。</param>
/// <param name="Height">源和目标图像的高度。</param>
/// <param name="Stride">源和目标图像的扫描行大小。</param>
/// <param name="CutLimit">需要裁减掉的直方图的比例。</param>
/// <remarks> 1: 只处理8位灰度和24位图像。</remarks>
/// <remarks> 2: Src和Dest可以相同,在相同时速度更快。</remarks>
/// <remarks> 3: 对每个通道进行单独的校正,可能会导致偏色。</remarks>
复制代码

算法效果:

    

    

 以上处理效果分别为CutLimit=0.001、0.01、0.02时的效果,其中photoshop中使用的是0.001该值

处理速度:

  I3  M380 2.53GHZ 笔记本上测试:1000 * 1000 彩色像素,用时6ms(时间是于参数无关的)。

代码情况:

      该函数通过裁剪各通道的最亮和最暗的部分,并将中间部分的数据量化到[0,255]之间,从而起到增强作用。由于各通道分开调节,有可能造成图像偏色。

posted @   Imageshop  阅读(2149)  评论(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 调用教程)
点击右上角即可分享
微信分享提示