Exemple #1
0
        public void TestGrayEqualization2()
        {
            var image = Util.ImageFile.LoadBmpImage("..\\..\\..\\TestImages\\直方图均衡测试图像gray2.bmp");

            image = new GrayEqualization(image).Equalization().Image;
            Util.ImageFile.SaveBmpImage(image, "..\\..\\..\\TestImages\\直方图均衡测试图像gray2_modified.bmp");
        }
Exemple #2
0
        private static void ModuleTwo(BmpImage image)
        {
            /*
             * 直方图均衡:
             *  1.灰度图像:
             *      进行直方图均衡,将均衡结果在存储至某一目录
             *  2.真彩图像:
             *      1.对其进行彩色变换(RGB->HSV):
             *      2.对亮度分量做直方图均衡
             *      3.做彩色反变换得到均衡结果,存储至某一目录
             */

            int photoFormat = CheckPhoto(image);

            if (photoFormat == 1)
            {
                System.Console.Write("\n检测到图片为灰度图像");
                System.Console.WriteLine("进行直方图均衡.....");
                var ge = new GrayEqualization(image);
                image = ge.Equalization().Image;
                System.Console.WriteLine("完成直方图均衡!");
                System.Console.WriteLine("----原始图像直方图----");
                DrawHistogram(image.Data.Width * image.Data.Height, ge.hist);
                var sv = new int[256];
                for (int i = 0; i < image.Data.Width; i++)
                {
                    for (int k = 0; k < image.Data.Height; k++)
                    {
                        sv[image.Data.Get8BitDataAt(i, k)]++;
                    }
                }
                System.Console.WriteLine("----均衡图像直方图----");
                DrawHistogram(image.Data.Width * image.Data.Height, sv);
            }
            else if (photoFormat == 2)
            {
                System.Console.Write("\n检测到图片为彩色图像");
                System.Console.WriteLine("进行直方图均衡(彩色变换为RGB->HSV).....");
                var ge = new ColorEqualization(image);
                image = ge.Equalization().Image;
                System.Console.WriteLine("完成直方图均衡!");
                System.Console.WriteLine("----原始图像直方图----");
                DrawHistogram(image.Data.Width * image.Data.Height, ge.histV);
                var sv = new int[256];
                for (int i = 0; i < image.Data.Width; i++)
                {
                    for (int k = 0; k < image.Data.Height; k++)
                    {
                        var rgb = image.Data.GetRGBDataAt(i, k);
                        sv[(rgb.R + rgb.G + rgb.B) / 3]++;
                    }
                }
                System.Console.WriteLine("----均衡图像直方图----");
                DrawHistogram(image.Data.Width * image.Data.Height, sv);
            }
            else
            {
                System.Console.Write("\n图片形式不支持模块转换哟~\n");
            }
        }