数字图像处理1:直方图均衡
2017-10-11 16:50
489 查看
L = 256 为 图像的灰度级数
private Color Color2Gray(Color color) { byte dGray = (byte)(0.30 * color.R + 0.59 * color.G + 0.11 * color.B); return Color.FromArgb(0xff, dGray, dGray, dGray); } /// <summary> /// 直方图均衡 /// </summary> private void zhifangjunheng_Tapped(object sender, TappedRoutedEventArgs e) { var imgArr = bitmap.GetPixelColors(); //原始图像的直方图 double[] src = new double[256]; //归一化直方图均衡 double[] target = new double[256]; //纪录各个灰度级的数量 int[] temp = new int[256]; byte[] targetgray = new byte[256]; //灰度处理并统计各个灰度级的数量 for (int n = 0; n < imgArr.Length ; n++) { Color gray = Color2Gray(imgArr ); imgArr = gray; temp[gray.R]++; }//计算直方均衡 for (int k = 0; k < 256; k++) { //原始图像的直方图 src[k] = temp[k] / (double)imgArr.Length; //归一化直方图均衡 for (int i = 0; i <= k; i++) { target[k] += src[i]; } double gray = target[k] * 255; if (gray < 0) gray = 0; if (gray > 255) gray = 255; targetgray[k] = (byte)(gray+0.5); }for (int n = 0; n < imgArr.Length; n++) { byte gray = targetgray[imgArr .R]; imgArr = Color.FromArgb(0xff, gray, gray, gray); } bitmap = CanvasBitmap.CreateFromColors(canCtrl, imgArr, (int)bitmap.Size.Width, (int)bitmap.Size.Height, 96); canCtrl.Invalidate(); }
canCtrl 为UWP WIN2D的CanvasControl控件 CanvasBitmap bitmap;
原图
处理后
直方均衡处理在暗区域密集处有马赛克
相关文章推荐
- python数字图像处理(9):直方图与均衡化
- 直方图和直方图均衡的Matlab完整程序(数字图像处理)
- python数字图像处理:直方图与均衡化
- python数字图像处理(9):直方图与均衡化
- MATLAB 图像处理-线性变换和直方图均衡
- 灰度图像直方图均衡处理
- andrid图像处理系统1.3.0图像的直方图均衡
- 【数字图像处理】[3]--直方图规范化
- 图像处理学习之直方图均衡
- 彩色图像直方图均衡处理
- 【数字图像处理】计算输入图像(jpg、bmp等)的LBP纹理图、纹理直方图及纹理图各像素的直方图并显示
- andrid图像处理系统1.3.0图像的直方图均衡
- 基于MATLAB的数字图像处理之直方图处理
- OpenCV数字图像处理五:显示直方图
- 图像处理之直方图均衡
- 【图像处理笔记】直方图均衡
- 图像处理基本算法-直方图均衡
- FPGA图像处理系列——直方图均衡
- 【图像处理笔记】直方图均衡
- 数字图像处理之直方图均衡化与匹配算法