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]];//赋值给界面显示的图像矩阵
                        }
                    }
            }

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

  • 相关阅读:
    SqlServer为字段创建索引
    学习java时在要求输出的数字带俩个小数点时,利用String.format时出现的问题
    JAVA字符串格式化-String.format()的使用
    Java中使用JSONTokener判断接口返回字符串是JSONObject还是JSONArray
    StringUtils工具类中的isBlank()方法和isEmpty()方法的区别
    Idea 隐藏不必要的文件或文件夹 eg:(.idea,.gitignore,*.iml)
    使用Gradle构建android应用
    Android开源库--SlidingMenu左右侧滑菜单
    cmd.exe-应用程序错误 应用程序无法正常启动(0xc0000142)
    Cocos2d-x 开发手记
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9579787.html
Copyright © 2011-2022 走看看