Win8Metro(C#)数字图像处理--2.34直方图规定化

简介: 原文:Win8Metro(C#)数字图像处理--2.34直方图规定化  [函数名称] WriteableBitmap HistogramSpecificateProcess(WriteableBitmap s...
原文: Win8Metro(C#)数字图像处理--2.34直方图规定化



[函数名称]

WriteableBitmap HistogramSpecificateProcess(WriteableBitmap src, WriteableBitmap dst)

[算法说明]

[函数代码]
        /// <summary>
        /// Histogram specification process.
        /// </summary>
        /// <param name="src">The source image.</param>
        /// <param name="dst">The image to get histogram to use.</param>
        /// <returns></returns>
        public static WriteableBitmap HistogramSpecificateProcess(WriteableBitmap src, WriteableBitmap dst)////38图像直方图规定化 
        {
            if (src != null)
            {
                int w = src.PixelWidth;
                int h = src.PixelHeight;
                byte[]histMap=HistogramMap(dst);
                WriteableBitmap histImage = new WriteableBitmap(w, h);
                byte[] temp = src.PixelBuffer.ToArray();
                for (int i = 0; i < temp.Length; i += 4)
                {
                    temp[i] = (byte)(255 * histMap[temp[i]]);
                    temp[i + 1] = (byte)(255 * histMap[temp[i+1]]);
                    temp[i + 2] = (byte)(255 * histMap[temp[i+2]]);
                }
                Stream sTemp = histImage.PixelBuffer.AsStream();
                sTemp.Seek(0, SeekOrigin.Begin);
                sTemp.Write(temp, 0, w * 4 * h);
                return histImage;
            }
            else
            {
                return null;
            }   
        }
        public static byte[] HistogramMap(WriteableBitmap src)
        {
            if (src != null)
            {
                byte[] temp = src.PixelBuffer.ToArray();
                byte gray;
                int[] tempArray = new int[256];
                int[] countPixel = new int[256];
                byte[] pixelMap = new byte[256];
                for (int i = 0; i < temp.Length; i += 4)
                {
                    gray = (byte)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299);
                    countPixel[gray]++;
                }
                for (int i = 0; i < 256; i++)
                {
                    if (i != 0)
                    {
                        tempArray[i] = tempArray[i - 1] + countPixel[i];
                    }
                    else
                    {
                        tempArray[0] = countPixel[0];
                    }
                    pixelMap[i] = (byte)(255 * tempArray[i] * 4 / temp.Length + 0.5);
                }
                return pixelMap;
            }
            else
                return null;
        }
[图像效果]
<img src="http://img.blog.csdn.net/20150412104816739?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJlbnQxOTg1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

目录
相关文章
|
8月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的直方图算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的直方图算法增强(C#)
61 0
|
8月前
|
算法 安全 机器人
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强(C#)
Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCVSharp实现图像的直方图算法增强(C#)
66 0
|
C# 计算机视觉
Win8 Metro(C#) 数字图像处理--1 图像打开,保存
原文:Win8 Metro(C#) 数字图像处理--1 图像打开,保存 作为本专栏的第一篇,必不可少的需要介绍一下图像的打开与保存,一便大家后面DEMO的制作。
1126 0
|
算法 C# 计算机视觉
C#数字图像处理算法详解大全
原文:C#数字图像处理算法详解大全 C#数字图像处理算法详解大全 网址http://dongtingyueh.blog.
1485 0
|
算法 C# 计算机视觉
Win8Metro(C#)数字图像处理--2.3图像反色
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明]     反色公式如下:       P'(x,y) = 255 - P(x,y);     P'(x,y)为反色后的像素值,P(x,y)是原始像素值。
1086 0
|
算法 数据挖掘 C#
Win8Metro(C#)数字图像处理--2.4图像颜色聚类
原文:Win8Metro(C#)数字图像处理--2.4图像颜色聚类  [函数名称] 图像颜色聚类函数ClusterProcess(WriteableBitmap src,int value) [算法说明]   图像颜色聚类的方法有很多,但是对于视频监控而言,现有方法很难满足实时性的要求,这里介绍一种位屏蔽压缩的方法实现颜色聚类,可以满足实时性的要求。
1012 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.8图像线性变换
原文:Win8Metro(C#)数字图像处理--2.8图像线性变换  2.8图像线性变换 [函数名称] 图像线性变换函数LinearTransformProcess(WriteableBitmap sr...
908 0
|
算法 C# 计算机视觉
Win8Metro(C#)数字图像处理--2.7图像伪彩色
原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色  2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoColorProcess(WriteableBitmap src) [算法说明]   伪彩色是为改善视觉效果,利用计算机图像增强技术对图像的灰度赋予的不同假色彩,即,将一张灰度图转化为彩色图。
1074 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.6图像对比度调整
原文:Win8Metro(C#)数字图像处理--2.6图像对比度调整  2.6图像对比度调整函数 [函数名称] 图像对比度调整函数ContrastAdjustProcess(WriteableBitma...
1065 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.5图像亮度调整
原文:Win8Metro(C#)数字图像处理--2.5图像亮度调整  2.5图像亮度调整函数 [函数名称]   图像亮度调整函数BrightnessAdjustProcess(Wr...
1141 0