Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 色调、饱和度、亮度和对比度之间的关系_C#_Image Processing_Emgucv - Fatal编程技术网

C# 色调、饱和度、亮度和对比度之间的关系

C# 色调、饱和度、亮度和对比度之间的关系,c#,image-processing,emgucv,C#,Image Processing,Emgucv,我有一个C#桌面应用程序 我正在使用emgu框架进行图像处理 我想做的是改善“被洗掉”的图像,让它们更具活力 使用myImage._EqualHist()可以在图片颜色丰富的情况下正常工作(如白天),但在夜间应用emgu过滤器后,白色平衡会扭曲,我得到一张非常明亮/繁忙的夜间图像。如果我能调整一下对比度,那就好了——我想 我找到了一些代码,可以为我调整对比度。我现在试图找到我应该使用什么值来调整对比度。显然,该值在24小时周期内会发生变化 我第一次尝试使用什么关系/公式来自动对比图像。 显然,我

我有一个C#桌面应用程序

我正在使用emgu框架进行图像处理

我想做的是改善“被洗掉”的图像,让它们更具活力

使用myImage._EqualHist()可以在图片颜色丰富的情况下正常工作(如白天),但在夜间应用emgu过滤器后,白色平衡会扭曲,我得到一张非常明亮/繁忙的夜间图像。如果我能调整一下对比度,那就好了——我想

我找到了一些代码,可以为我调整对比度。我现在试图找到我应该使用什么值来调整对比度。显然,该值在24小时周期内会发生变化

我第一次尝试使用什么关系/公式来自动对比图像。 显然,我是在猜测和尝试。不是很科学//数学,我正在网上搜索一些我可以应用的逻辑

我也应该考虑图像的伽玛吗?

这是我目前的代码:

           Image<Bgr, Byte> imgColor = new Image<Bgr, byte>(@"d:\20140320022038047.jpg");
            Image<Hsv,Byte> hsv = new Image<Hsv,byte>(imgColor.ToBitmap());
            double averageHue = hsv[0].GetAverage().Intensity;
            double averageSat = hsv[1].GetAverage().Intensity;
            double averageLum = hsv[2].GetAverage().Intensity;

            //I am guessing here and playing around with the constants
            float adjustContrastBy =(float)( averageLum / averageHue);

            byte[, ,] data = imgColor.Data;
            //this part of the code enumertaes through the Image byte array
            for (int y = 0; y < imgColor.Height ; y++)
            {
                for (int x = 0; x < imgColor.Width; x++)
                {
                    byte B = data[y, x, 0];
                    byte G = data[y, x, 1];
                    byte R = data[y, x, 2];

                    float Red = R / 255.0f;
                    float Green = G / 255.0f;
                    float Blue = B / 255.0f;
                    Red = (((Red - 0.5f) * adjustContrastBy) + 0.5f) * 255.0f;
                    Green = (((Green - 0.5f) * adjustContrastBy) + 0.5f) * 255.0f;
                    Blue = (((Blue - 0.5f) * adjustContrastBy) + 0.5f) * 255.0f;

                    int iR = (int)Red;
                    iR = iR > 255 ? 255 : iR;
                    iR = iR < 0 ? 0 : iR;
                    int iG = (int)Green;
                    iG = iG > 255 ? 255 : iG;
                    iG = iG < 0 ? 0 : iG;
                    int iB = (int)Blue;
                    iB = iB > 255 ? 255 : iB;
                    iB = iB < 0 ? 0 : iB;

                    data[y, x, 0] = (byte)iB;
                    data[y, x, 1] = (byte)iG;
                    data[y, x, 2] = (byte)iR;
                }
            }
            pictureBox1.Image = imgColor.ToBitmap();

这当然有助于我进行运动检测,但我现在关注的是改善用户“看到”的内容,而不是计算机检测到的内容。

虽然不一定是精确的副本,但可能会为您提供一些有用的信息。您好,感谢您的评论和时间,但这是我得到的调整图像对比度代码的页面。我试图把它进一步1步,并使用一个自动变化因子作为对比度每图像:)我也应该考虑图像的伽玛?尽一切办法!!Gamma,而不是对比度总是第一件要尝试的事情,当改进图像时。@TaW嗨,谢谢你的兴趣,我编辑了我的问题来展示我目前是如何使用它的。我只是想知道我应该在某处使用伽马的导出图吗?你提到了自动变化。那么,您是否向用户提供了可供选择的变体,以便用户能够向下钻取最佳更正?
double intensity = grayCurrent.GetAverage().Intensity;
double g = Math.Log(Shared.Optimum / 255) / Math.Log(intensity / 255);
grayCurrent._GammaCorrect(g);