zoukankan      html  css  js  c++  java
  • 图像增强算法

    1.直接上代码:

      

    /// <summary>
            /// 增强图像因子改变(imageArray)
            /// </summary>
            /// <param name="rawDataArray">摄像头得到的二维short矩阵</param>
            /// <param name="iImageHeight">rawDataArray高</param>
            /// <param name="iImageWidth">rawDataArray宽</param>
            /// <param name="rawImageArray">表示要显示图像的byte矩阵</param>
            public void enhancePar(short[,] rawDataArray, int iImageHeight, int iImageWidth, ref byte[,] rawImageArray)
            {
                int gamma = int.Parse(inifile.ReadString("Config", "gamma", "255"));
                //int gamma = vScrollBarHeight.Value * 255 / vScrollBarHeight.Maximum;
                if (rawDataArray == null) return;
                short[] HistoryData = new short[5000];
                byte[] LUT = new byte[5000];
                int i, j;
                //int shangX=vScrollBarHeight.Maximum - vScrollBarHeight.Value;
                //int xiaX=vScrollBarHeight.Maximum - vScrollBarHeight.Value - (int)(double.Parse(TextWindowWidth.Text) * 100);
                //Console.WriteLine(shangX+"   "+xiaX);
                for (j = 0; j < iImageHeight; j++)
                    for (i = 0; i < iImageWidth; i++)
                    {
                        if (rawDataArray[i, j] <= 0)
                        {
                            continue;
                        }
                        if (rawDataArray[i, j] >= (vScrollBarHeight.Maximum - vScrollBarHeight.Value))//如果大于赋色彩窗体最高值
                        {
                            rawDataArray[i, j] = 0;
                        }
                        if (rawDataArray[i, j] <= (vScrollBarHeight.Maximum - vScrollBarHeight.Value - double.Parse(TextWindowWidth.Text) * 100))//如果小于赋色彩窗体最低值
                        {
                            rawDataArray[i, j] = 0;
                        }
                        HistoryData[rawDataArray[i, j]]++;
                    }
                int sum = 0, HistorySum = 0;
    
                for (i = 0; i < 5000; i++)//对255灰阶进行着重处理
                {
                    if (HistoryData[i] > 10)
                    {
                        HistoryData[i] = 10;
                    }
                    if (HistoryData[i] < 3)
                    {
                        HistoryData[i] = 0;
                    }
                    HistorySum += HistoryData[i];
                }
                sum = 0;
                for (i = 0; i < 5000; i++)
                {
                    //if (HistoryData[i] == 0)
                    //{
                    //    LUT[i] = (byte)(1);
                    //    continue;
                    //}
                    sum += HistoryData[i];
                    if (HistorySum != 0)
                    {
                        LUT[i] = (byte)((sum * gamma / HistorySum + 1) >= 254 ? 254 : (sum * gamma / HistorySum + 1));//得到图像矩阵
                    }
                    else
                    {
                        LUT[i] = (byte)(1);
                    }
                }
                for (j = 0; j < iImageHeight; j++)
                    for (i = 0; i < iImageWidth; i++)
                    {
                        if (rawDataArray[i, j] < 0)
                        {
                            continue;
                        }
                        else
                        {
                            rawImageArray[i, j] = LUT[rawDataArray[i, j]];//赋值给界面显示的图像矩阵
                        }
                    }
            }

                 注:此代码有点简单,可深究图像增强算法。

  • 相关阅读:
    [BJOI2019] 光线
    C# 从零开始写 SharpDx 应用 笔刷
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    PowerShell 拿到显卡信息
    PowerShell 拿到显卡信息
    win10 uwp 如何使用DataTemplate
    win10 uwp 如何使用DataTemplate
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9579787.html
Copyright © 2011-2022 走看看