Пример #1
0
        public void TestColorEqualization3()
        {
            var image = Util.ImageFile.LoadBmpImage("..\\..\\..\\TestImages\\直方图均衡测试图片color3.bmp");

            image = new ColorEqualization(image).Equalization().Image;
            Util.ImageFile.SaveBmpImage(image, "..\\..\\..\\TestImages\\直方图均衡测试图片color3_modified.bmp");
        }
Пример #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");
            }
        }
Пример #3
0
        public void TestHSVAndRGB()
        {
            //因为float精度问题不能直接比较,经过人工测试,没有问题;
            var image = Util.ImageFile.LoadBmpImage("..\\..\\..\\TestImages\\直方图均衡测试图片color3.bmp");
            ColorEqualization colorEqualization = new ColorEqualization(image);
            RGB rgb1 = new RGB {
                R = 240, G = 248, B = 255
            };
            HSV hsv1 = new HSV {
                H = (int)(0.5778 * 360), S = 0.0588F, V = 1.0000F
            };
            //Assert.Equal(rgb1,colorEqualization.HSV2RGB(hsv1));
            //Assert.Equal(hsv1, colorEqualization.RGB2HSV(rgb1));


            RGB rgb2 = new RGB {
                R = 139, G = 130, B = 119
            };
            HSV hsv2 = new HSV {
                H = (int)(0.0965 * 360), S = 0.1367F, V = 0.5451F
            };
            //Assert.Equal(rgb2,colorEqualization.HSV2RGB(hsv2));
            //Assert.Equal(hsv2, colorEqualization.RGB2HSV(rgb2));

            RGB rgb3 = new RGB {
                R = 255, G = 255, B = 255
            };
            HSV hsv3 = new HSV {
                H = 0, S = 0.0F, V = 1.0000F
            };
            //Assert.Equal(rgb3, colorEqualization.HSV2RGB(hsv3));
            //Assert.Equal(hsv3, colorEqualization.RGB2HSV(rgb3));

            RGB rgb4 = new RGB {
                R = 162, G = 205, B = 90
            };
            HSV hsv4 = new HSV {
                H = (int)(0.2290 * 360), S = 0.5610F, V = 0.8039F
            };
            //Assert.Equal(rgb4,colorEqualization.HSV2RGB(hsv4));
            //Assert.Equal(hsv4, colorEqualization.RGB2HSV(rgb4));
        }