博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8Metro(C#)数字图像处理--2.4图像颜色聚类
阅读量:7178 次
发布时间:2019-06-29

本文共 1229 字,大约阅读时间需要 4 分钟。

原文:



[函数名称]

图像颜色聚类函数ClusterProcess(WriteableBitmap src,int value)

[算法说明]

  图像颜色聚类的方法有很多,但是对于视频监控而言,现有方法很难满足实时性的要求,这里介绍一种位屏蔽压缩的方法实现颜色聚类,可以满足实时性的要求。

  位屏蔽法就是在3DRGB真彩空间中近似均匀采样的颜色压缩方法,即将屏蔽的颜色位置设置为0,具体可以采用移位运算来实现

  一个像素的RGBA分量各占一个字节(这里指32位格式),对于每一个字节,它的大小为[0,255],用二进制位表示如下:

                        0000 0000——1111 1111

  比如11111111移位3位为11111000,按这个方法,我们可以将其移位N(0<N<=7)位,在C#中表现为&操作,如11111111位移3位可表示为:255&248

  用上述这个移位屏蔽算法,我们可以对彩色图像中的每一个像素进行这样的移位操作,那么图像像素值就会得到相应的颜色空间的压缩,从而达到聚类的效果。

[函数代码]

       ///<summary>

       /// Cluster process (a fast method be introduced here).

       ///</summary>

       ///<param name="src">Source image.</param>

       ///<param name="value">Choose one of {254-128}</param>

       ///<returns></returns>

       publicstaticWriteableBitmap ClusterProcess(WriteableBitmap src,int value)4聚类处理

       {

           if(src!=null )

           {

           int w = src.PixelWidth;

           int h = src.PixelHeight;

           WriteableBitmap clusterImage =newWriteableBitmap(w,h);

           byte[] temp = src.PixelBuffer.ToArray();

           for (int i = 0; i < temp.Length; i += 4)

           {

               temp[i] = (byte)(temp[i] & value);

               temp[i + 1] = (byte)(temp[i + 1] & value);

               temp[i + 2] = (byte)(temp[i + 2] & value);

           }

           Stream sTemp = clusterImage.PixelBuffer.AsStream();

           sTemp.Seek(0,SeekOrigin.Begin);

           sTemp.Write(temp, 0, w * 4 * h);

           return clusterImage;

           }

           else

           {

               returnnull;

           }  

       }

你可能感兴趣的文章
34个漂亮的应用程序后台管理界面
查看>>
java JDK6的可变参数
查看>>
初入职场程序员的五大钻石法则
查看>>
Node.js学习笔记(一)概述
查看>>
split的3种方法
查看>>
忽略PNG透明区域的事件(AS/Flash)
查看>>
文本框只能输入正整数(大于0的整数)代码
查看>>
一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)...
查看>>
只需简单一步,android自带的示例程序 BluetoothChat 变蓝牙串口助手
查看>>
thrift之TTransport层的内存缓存传输类TMemoryBuffer
查看>>
使用pull方式解析xml文件示例:
查看>>
学习jQuery的免费资源:电子书、视频、教程和博客
查看>>
找出数列中个数大于总数一半的元素(编程之美2.3)
查看>>
断路器(CircuitBreaker)设计模式
查看>>
SQL中利用DMV进行数据库性能分析
查看>>
讨论:程序员高手和菜鸟的区别是什么?
查看>>
SQL Server里的 ISNULL 与 NULLIF
查看>>
Linux Systemcall By INT 0x80、Llinux Kernel Debug Based On Sourcecode
查看>>
imageNamed 与 imageWithContentsOfFile的区别
查看>>
【Mysql 调用存储过程,输出参数的坑】
查看>>