C#灰度图转伪彩色图
/// <summary>/// 伪彩色图像构造器/// </summary>public class PseudoColorImageBuilder{/// <summary>/// 铁红色带映射表/// 每一行代表一个彩色分类,存放顺序是RGB/// </summary>public static byte[,] ironTable = new byte[128, 3] {{0, 0, 0},{0, 0, 0},{0, 0, 36},{0, 0, 51},{0, 0, 66},{0, 0, 81},{2, 0, 90},{4, 0, 99},{7, 0, 106},{11, 0, 115},{14, 0, 119},{20, 0, 123},{27, 0, 128},{33, 0, 133},{41, 0, 137},{48, 0, 140},{55, 0, 143},{61, 0, 146},{66, 0, 149},{72, 0, 150},{78, 0, 151},{84, 0, 152},{91, 0, 153},{97, 0, 155},{104, 0, 155},{110, 0, 156},{115, 0, 157},{122, 0, 157},{128, 0, 157},{134, 0, 157},{139, 0, 157},{146, 0, 156},{152, 0, 155},{157, 0, 155},{162, 0, 155},{167, 0, 154},{171, 0, 153},{175, 1, 152},{178, 1, 151},{182, 2, 149},{185, 4, 149},{188, 5, 147},{191, 6, 146},{193, 8, 144},{195, 11, 142},{198, 13, 139},{201, 17, 135},{203, 20, 132},{206, 23, 127},{208, 26, 121},{210, 29, 116},{212, 33, 111},{214, 37, 103},{217, 41, 97},{219, 46, 89},{221, 49, 78},{223, 53, 66},{224, 56, 54},{226, 60, 42},{228, 64, 30},{229, 68, 25},{231, 72, 20},{232, 76, 16},{234, 78, 12},{235, 82, 10},{236, 86, 8},{237, 90, 7},{238, 93, 5},{239, 96, 4},{240, 100, 3},{241, 103, 3},{241, 106, 2},{242, 109, 1},{243, 113, 1},{244, 116, 0},{244, 120, 0},{245, 125, 0},{246, 129, 0},{247, 133, 0},{248, 136, 0},{248, 139, 0},{249, 142, 0},{249, 145, 0},{250, 149, 0},{251, 154, 0},{252, 159, 0},{253, 163, 0},{253, 168, 0},{253, 172, 0},{254, 176, 0},{254, 179, 0},{254, 184, 0},{254, 187, 0},{254, 191, 0},{254, 195, 0},{254, 199, 0},{254, 202, 1},{254, 205, 2},{254, 208, 5},{254, 212, 9},{254, 216, 12},{255, 219, 15},{255, 221, 23},{255, 224, 32},{255, 227, 39},{255, 229, 50},{255, 232, 63},{255, 235, 75},{255, 238, 88},{255, 239, 102},{255, 241, 116},{255, 242, 134},{255, 244, 149},{255, 245, 164},{255, 247, 179},{255, 248, 192},{255, 249, 203},{255, 251, 216},{255, 253, 228},{255, 254, 239},{255, 255, 249},{255, 255, 249},{255, 255, 249},{255, 255, 249},{255, 255, 249},{255, 255, 249},{255, 255, 249},{255, 255, 249} };/// <summary>/// 彩虹色带映射表/// </summary>public static byte[,] rainTable = new byte[128, 3] {{0, 0, 0},{0, 0, 0},{15, 0, 15},{31, 0, 31},{47, 0, 47},{63, 0, 63},{79, 0, 79},{95, 0, 95},{111, 0, 111},{127, 0, 127},{143, 0, 143},{159, 0, 159},{175, 0, 175},{191, 0, 191},{207, 0, 207},{223, 0, 223},{239, 0, 239},{255, 0, 255},{239, 0, 250},{223, 0, 245},{207, 0, 240},{191, 0, 236},{175, 0, 231},{159, 0, 226},{143, 0, 222},{127, 0, 217},{111, 0, 212},{95, 0, 208},{79, 0, 203},{63, 0, 198},{47, 0, 194},{31, 0, 189},{15, 0, 184},{0, 0, 180},{0, 15, 184},{0, 31, 189},{0, 47, 194},{0, 63, 198},{0, 79, 203},{0, 95, 208},{0, 111, 212},{0, 127, 217},{0, 143, 222},{0, 159, 226},{0, 175, 231},{0, 191, 236},{0, 207, 240},{0, 223, 245},{0, 239, 250},{0, 255, 255},{0, 245, 239},{0, 236, 223},{0, 227, 207},{0, 218, 191},{0, 209, 175},{0, 200, 159},{0, 191, 143},{0, 182, 127},{0, 173, 111},{0, 164, 95},{0, 155, 79},{0, 146, 63},{0, 137, 47},{0, 128, 31},{0, 119, 15},{0, 110, 0},{15, 118, 0},{30, 127, 0},{45, 135, 0},{60, 144, 0},{75, 152, 0},{90, 161, 0},{105, 169, 0},{120, 178, 0},{135, 186, 0},{150, 195, 0},{165, 203, 0},{180, 212, 0},{195, 220, 0},{210, 229, 0},{225, 237, 0},{240, 246, 0},{255, 255, 0},{251, 240, 0},{248, 225, 0},{245, 210, 0},{242, 195, 0},{238, 180, 0},{235, 165, 0},{232, 150, 0},{229, 135, 0},{225, 120, 0},{222, 105, 0},{219, 90, 0},{216, 75, 0},{212, 60, 0},{209, 45, 0},{206, 30, 0},{203, 15, 0},{200, 0, 0},{202, 11, 11},{205, 23, 23},{207, 34, 34},{210, 46, 46},{212, 57, 57},{215, 69, 69},{217, 81, 81},{220, 92, 92},{222, 104, 104},{225, 115, 115},{227, 127, 127},{230, 139, 139},{232, 150, 150},{235, 162, 162},{237, 173, 173},{240, 185, 185},{242, 197, 197},{245, 208, 208},{247, 220, 220},{250, 231, 231},{252, 243, 243},{252, 243, 243},{252, 243, 243},{252, 243, 243},{252, 243, 243},{252, 243, 243},{252, 243, 243},{252, 243, 243}};/// <summary>/// 灰度图转伪彩色图像函数(通过映射规则计算的方法)/// </summary>/// <param name="src">24位灰度图</param>/// <returns>返回构造的伪彩色图像</returns>public static Bitmap PGrayToPseudoColor1(Bitmap src){try{Bitmap a = new Bitmap(src);Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);int stride = bmpData.Stride;unsafe{byte* pIn = (byte*)bmpData.Scan0.ToPointer();byte* P;int R, G, B;int temp = 0;for (int y = 0; y < a.Height; y++){for (int x = 0; x < a.Width; x++){P = pIn;B = P[0];G = P[1];R = P[2];temp = (byte)(B * 0.114 + G * 0.587 + R * 0.299);if (temp >= 0 && temp <= 63){P[2] = 0;P[1] = (byte)(254 - 4 * temp);P[0] = (byte)255;}if (temp >= 64 && temp <= 127){P[2] = 0;P[1] = (byte)(4 * temp - 254);P[0] = (byte)(510 - 4 * temp);}if (temp >= 128 && temp <= 191){P[2] = (byte)(4 * temp - 510);P[1] = (byte)(255);P[0] = (byte)0;}if (temp >= 192 && temp <= 255){P[2] = (byte)255;P[1] = (byte)(1022 - 4 * temp);P[0] = (byte)0;}pIn += 3;}pIn += stride - a.Width * 3;}}a.UnlockBits(bmpData);return a;}catch (Exception e){MessageBox.Show(e.Message.ToString());return null;}}/// <summary>/// 灰度图转伪彩色图像函数(通过查表的方法)/// </summary>/// <param name="src"></param>/// <param name="type">转换类型(1.使用铁红 2.使用彩虹)</param>/// <returns></returns>public static Bitmap PGrayToPseudoColor2(Bitmap src,int type){try{if (type == 1){Bitmap a = new Bitmap(src);Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);int stride = bmpData.Stride;unsafe{byte* pIn = (byte*)bmpData.Scan0.ToPointer();int temp;byte R, G, B;for (int y = 0; y < a.Height; y++){for (int x = 0; x < a.Width; x++){temp = pIn[0]/2;R = ironTable[temp, 0];G = ironTable[temp, 1];B = ironTable[temp, 2];pIn[0] = B;pIn[1] = G;pIn[2] = R;pIn += 3;}pIn += stride - a.Width * 3;}}a.UnlockBits(bmpData);return a;}else if (type == 2){Bitmap a = new Bitmap(src);Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);int stride = bmpData.Stride;unsafe{byte* pIn = (byte*)bmpData.Scan0.ToPointer();int temp;byte R, G, B;for (int y = 0; y < a.Height; y++){for (int x = 0; x < a.Width; x++){temp = pIn[0] / 2;R = rainTable[temp, 0];G = rainTable[temp, 1];B = rainTable[temp, 2];pIn[0] = B;pIn[1] = G;pIn[2] = R;pIn += 3;}pIn += stride - a.Width * 3;}}a.UnlockBits(bmpData);return a;}else{throw new Exception("type 参数不合法!");}}catch (Exception e){MessageBox.Show(e.Message.ToString());return null;}}}
C#灰度图转伪彩色图相关推荐
- opencv遍历实现灰度图转伪彩色图[C/C++][附applyColorMap方法]
灰度图转伪彩色图 数字图像处理的作业,利用opencv实现通过灰度隐射将灰度图转化为伪彩色图. 效果大概如下,在最后附带opencv自带函数处理的方法 原图 遍历图 opencv的 applyColo ...
- 数字图像处理--灰度图转伪彩色图
开篇废话 观察了一下冈萨雷斯的书,发现彩色图像处理仅仅用了一章进行介绍,原因分析了一下,后来发现,好像别的介绍的也不多,得出一个结论.冈萨雷斯这本书仅仅能作为一部纲领性的介绍.它基本涵盖了图像处理的基 ...
- 图像处理之灰度图转伪彩色图原理与代码分析
首先强调:在matlab中用[row,col]=size(x)获取的行和列是与图片编辑器显示的行列相反. 首先RGB图转为灰度图,通过rgb2gray()函数:灰度图中每个像素点的灰度值根据三个分段线 ...
- python彩虹图_灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3
做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...
- matlab灰度图转伪彩色,[转载]灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3
做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...
- Labview实现图片24bit转变为8bit及灰度图的伪彩显示
原图: 伪彩显示效果: 24bit转换为8bit程序框图: 伪彩显示程序框图: VI链接:Labview实现图片24bit转变为8bit及伪彩显示的源码-C文档类资源-CSDN下载 参考了这两位博主的 ...
- opencv将灰度图转为彩色图
使用opencv将一幅灰度图转为彩色图. 使用函数:cvtColor(); Mat imgGray= imread("gray.jpg",0); Mat imgRGB; ...
- c++ opencv 灰度图转彩色图
灰度图转彩色图______主要作用:在图上画彩色线条等等 //灰度图转彩色图 cv::Mat grayToRGB(const cv::Mat input_img) {//创建一个和灰度图一样大小的0值 ...
- opencv灰度图转伪彩图或彩色图
一.背景 一般例如红外图像,呈现出来的是灰度图效果,此时每个像素有一个,在0-255内,如果想要观看伪彩图,也就是人工设置的彩色,需要在灰度图的基础上,给它增加RGB三个通道的值,让它变为看起来有红绿 ...
最新文章
- 第一次CM--CosH.2
- 【5 数学规划】实际问题实战
- java多线程之hashmap concurrenthashmap的状态同步
- java人种_实在看不出藏族有大量矮黑血统
- 【BZOJ2588】Count on a tree,主席树维护链+ST表求LCA
- CMU 15-213 Introduction to Computer Systems学习笔记(12) Linking
- 手机抓直播源工具app_东方卫视 手机在线直播 央视源
- Analysis::checkBidir2Nx2N()
- PC防光护眼专家Iris Pro绿色特别版 傻瓜式软件
- Vehicle Spy3软件常用功能之总线负载率
- 微型计算机基础理论——微处理器工作概述
- [视频发布] 掘金 Podcast 报名中,摩拜单车、美团点评团队分享 Vue 最佳实践
- map和set的异同
- 第九届蓝桥杯稍小分数c语言,【第九届蓝桥杯大赛征文】蓝桥梦
- mysql复杂查询的书_mysql 复杂查询
- 网易云音乐-面临百万请求的最优方案(公开课-笔记)
- elasticsearch 的分词
- ieee 分布式34节点模型
- 微信小程序开发者工具怎么使用Less、Sass
- 什么才是DOCSIS 3.1技术?
热门文章
- 星地融合→→→6G移动通信关键技术的未来
- 3 操作系统第二章 进程管理 进程定义、特征、组织、状态与转换
- HDU 5890 Eighty seven(DP+bitset优化)
- 20150210--Smarty1-02
- javascript中setInterval,setTimeout的区别跟用法
- FastReport v3.2.5在BDS2006中的安装方法
- 【计算机网络复习 物理层】2.1.1 物理层基本概念
- Leetcode--78. 子集
- nacos 怎么配置 里的配置ip_nacos集群配置
- mysql 启动 修改密码_基础的启动/停止/重启/密码修改MySQL