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

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

原文:



2.7图像伪彩色函数

[函数名称]

图像伪彩色函数PseudoColorProcess(WriteableBitmap src)

[算法说明]

  伪彩色是为改善视觉效果,利用计算机图像增强技术对图像的灰度赋予的不同假色彩,即,将一张灰度图转化为彩色图。主要原理是把灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成为不同的彩色空间。

  本文采用基于RGB颜色空间的伪彩色映射算法。过程如下:

 [函数代码]

       ///<summary>

       /// Pseudo color process.

       ///</summary>

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

       ///<returns></returns>

       publicstaticWriteableBitmap PseudoColorProcess(WriteableBitmap src)7伪彩色处理

       {

           if(src!=null )

           {

           int w = src.PixelWidth;

           int h = src.PixelHeight;

           WriteableBitmap pseudoImage =newWriteableBitmap(w, h);

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

           int tGray = 0;

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

           {

               tGray = (int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299);

               if (tGray >= 0 && tGray <= 63)

               {

                   temp[i] = (byte)255;

                   temp[i + 1] = (byte)(254 - 4 * tGray);

                   temp[i + 2] = 0;

               }

               if (tGray >= 64 && tGray <= 127)

               {

                   temp[i] = (byte)(510 - 4 * tGray);

                   temp[i + 1] = (byte)(4 * tGray - 254);

                   temp[i + 2] = (byte)0;

               }

               if (tGray >= 128 && tGray <= 191)

               {

                   temp[i] = (byte)0;

                   temp[i + 1] = (byte)255;

                   temp[i + 2] = (byte)(4 * tGray - 510);

               }

               if (tGray >= 192 && tGray <= 255)

               {

                   temp[i] = (byte)0;

                   temp[i + 1] = (byte)(1022 - 4 * tGray);

                   temp[i + 2] = (byte)255;

               }

               tGray = 0;

           }

           Stream sTemp = pseudoImage.PixelBuffer.AsStream();

           sTemp.Seek(0,SeekOrigin.Begin);

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

           return pseudoImage;

           }

           else

           {

               returnnull;

           }  

       }

 



你可能感兴趣的文章
NSDate & NSDateFormatter
查看>>
android 点击屏幕关闭 软键盘
查看>>
相似图片搜索的原理(转)
查看>>
钟南山:高收入群体往往老得快
查看>>
Linux Kernel(Android) 加密算法汇总(三)-应用程序调用内核加密算法接口
查看>>
开发中三个经典的原则
查看>>
logging日志管理-将日志写入文件
查看>>
Hibernate 、Hql查询和Criteria查询
查看>>
滚动条滚动到底部触发事件
查看>>
『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于SQL)
查看>>
python之模块pydoc
查看>>
ASP.NET MVC 下拉列表使用小结
查看>>
nodejs基础 -- NPM 使用介绍
查看>>
Loadrunner中关联的作用:
查看>>
(转)BT1120接口及协议
查看>>
Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
查看>>
The Dataflow Model 论文
查看>>
Linux守护进程
查看>>
遇到没“人性”的管理:你真可怜!
查看>>
http://www.bootcss.com/p/font-awesome/
查看>>