图像增强算法

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

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

原文地址:https://www.cnblogs.com/gaara-zhang/p/9579787.html