/// <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#灰度图转伪彩色图相关推荐

  1. opencv遍历实现灰度图转伪彩色图[C/C++][附applyColorMap方法]

    灰度图转伪彩色图 数字图像处理的作业,利用opencv实现通过灰度隐射将灰度图转化为伪彩色图. 效果大概如下,在最后附带opencv自带函数处理的方法 原图 遍历图 opencv的 applyColo ...

  2. 数字图像处理--灰度图转伪彩色图

    开篇废话 观察了一下冈萨雷斯的书,发现彩色图像处理仅仅用了一章进行介绍,原因分析了一下,后来发现,好像别的介绍的也不多,得出一个结论.冈萨雷斯这本书仅仅能作为一部纲领性的介绍.它基本涵盖了图像处理的基 ...

  3. 图像处理之灰度图转伪彩色图原理与代码分析

    首先强调:在matlab中用[row,col]=size(x)获取的行和列是与图片编辑器显示的行列相反. 首先RGB图转为灰度图,通过rgb2gray()函数:灰度图中每个像素点的灰度值根据三个分段线 ...

  4. python彩虹图_灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3

    做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...

  5. matlab灰度图转伪彩色,[转载]灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3

    做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...

  6. Labview实现图片24bit转变为8bit及灰度图的伪彩显示

    原图: 伪彩显示效果: 24bit转换为8bit程序框图: 伪彩显示程序框图: VI链接:Labview实现图片24bit转变为8bit及伪彩显示的源码-C文档类资源-CSDN下载 参考了这两位博主的 ...

  7. opencv将灰度图转为彩色图

    使用opencv将一幅灰度图转为彩色图. 使用函数:cvtColor(); Mat imgGray= imread("gray.jpg",0);     Mat imgRGB;   ...

  8. c++ opencv 灰度图转彩色图

    灰度图转彩色图______主要作用:在图上画彩色线条等等 //灰度图转彩色图 cv::Mat grayToRGB(const cv::Mat input_img) {//创建一个和灰度图一样大小的0值 ...

  9. opencv灰度图转伪彩图或彩色图

    一.背景 一般例如红外图像,呈现出来的是灰度图效果,此时每个像素有一个,在0-255内,如果想要观看伪彩图,也就是人工设置的彩色,需要在灰度图的基础上,给它增加RGB三个通道的值,让它变为看起来有红绿 ...

最新文章

  1. 第一次CM--CosH.2
  2. 【5 数学规划】实际问题实战
  3. java多线程之hashmap concurrenthashmap的状态同步
  4. java人种_实在看不出藏族有大量矮黑血统
  5. 【BZOJ2588】Count on a tree,主席树维护链+ST表求LCA
  6. CMU 15-213 Introduction to Computer Systems学习笔记(12) Linking
  7. 手机抓直播源工具app_东方卫视 手机在线直播 央视源
  8. Analysis::checkBidir2Nx2N()
  9. PC防光护眼专家Iris Pro绿色特别版 傻瓜式软件
  10. Vehicle Spy3软件常用功能之总线负载率
  11. 微型计算机基础理论——微处理器工作概述
  12. [视频发布] 掘金 Podcast 报名中,摩拜单车、美团点评团队分享 Vue 最佳实践
  13. map和set的异同
  14. 第九届蓝桥杯稍小分数c语言,【第九届蓝桥杯大赛征文】蓝桥梦
  15. mysql复杂查询的书_mysql 复杂查询
  16. 网易云音乐-面临百万请求的最优方案(公开课-笔记)
  17. elasticsearch 的分词
  18. ieee 分布式34节点模型
  19. 微信小程序开发者工具怎么使用Less、Sass
  20. 什么才是DOCSIS 3.1技术?

热门文章

  1. 星地融合→→→6G移动通信关键技术的未来
  2. 3 操作系统第二章 进程管理 进程定义、特征、组织、状态与转换
  3. HDU 5890 Eighty seven(DP+bitset优化)
  4. 20150210--Smarty1-02
  5. javascript中setInterval,setTimeout的区别跟用法
  6. FastReport v3.2.5在BDS2006中的安装方法
  7. 【计算机网络复习 物理层】2.1.1 物理层基本概念
  8. Leetcode--78. 子集
  9. nacos 怎么配置 里的配置ip_nacos集群配置
  10. mysql 启动 修改密码_基础的启动/停止/重启/密码修改MySQL