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"); }
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"); } }