惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - domini

给年轻工程师的十大忠告 vc定时以及计时的方法 数字图像处理常用词 VC里一些容易混淆的地方 VC数据类型的转换 C语言 第二讲 数据类型 windows进程中的内存结构 调试方法和技巧,作者:非凡 Bitblt的参数 图像的文件格式bmp gif 怎样在内存缓冲中画图 转载 原作者 相生昌 MFC GDI双缓冲避免图形闪烁,转载 关键字 Windows API函数大全 利用GDI+的双缓冲技术来提高绘图效率 屏幕任意抓图截图 Visual C++的程序设计技巧 VC中用GDI函数实规高速平滑动画 模板匹配 API函数大全
用Visua C++6.0为灰度图像增加彩色滤镜制作"复古照"
domini · 2005-03-19 · via 博客园 - domini

2 图像色彩滤镜原理--伪彩色编码

  为图像添加色彩滤镜在数字图像处理领域的名称为伪彩色编码。它是通过把灰度图像或黑白图像赋予特殊的调色板来实现的。我们知道,对于灰度图像,其RGB值均相等,即对于图像中的任意一个象素,其红色分量取值=绿色分量取值=蓝色分量取值。

  256级灰度图的一般码表为:

{ // 常规灰度编码
{ 0, 0, 0 }, { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } , //4
{ 4, 4, 4 }, { 5, 5, 5 }, { 6, 6, 6 }, { 7, 7, 7 }, //8
{ 8, 8, 8 }, { 9, 9, 9 }, { 10, 10, 10 }, { 11, 11, 11 }, //12
{ 12, 12, 12 }, { 13, 13, 13 }, { 14, 14, 14 }, { 15, 15, 15 }, //16
{ 16, 16, 16 }, { 17, 17, 17 }, { 18, 18, 18 }, { 19, 19, 19 }, //20
{ 20, 20, 20 }, { 21, 21, 21 }, { 22, 22, 22 }, { 23, 23, 23 }, //24
… … … …
{ 228,228,228 }, { 229,229,229 }, { 230,230,230 }, { 231,231,231 }, //232
{ 232,232,232 }, { 233,233,233 }, { 234,234,234 }, { 235,235,235 }, //236
{ 236,236,236 }, { 237,237,237 }, { 238,238,238 }, { 239,239,239 }, //240
{ 240,240,240 }, { 241,241,241 }, { 242,242,242 }, { 243,243,243 }, //244
{ 244,244,244 }, { 245,245,245 }, { 246,246,246 }, { 247,247,247 }, //248
{ 248,248,248 }, { 249,249,249 }, { 250,250,250 }, { 251,251,251 }, //252
{ 252,252,252 }, { 253,253,253 }, { 254,254,254 }, { 255,255,255 }, //256
}//规律:R=G=B=i, for i=0 to 255


3 编程部分

  下面我们以256级灰度图"angel.bmp"为例,给出用VC++ 6.0编写的主要步骤和关键函数,程序在PC机的Windows 2000 环境中调试通过,并取得了良好的色彩效果。

  在VC的MFC Appwizard向导下建立一个single document型的工程,其中CFunnyView的基类为CformView,修改菜单属性,如图1的主界面。

// 编码表个数
#define COLOR_SCALE_COUNT 6
// 编码表名称
const char ColorScaleName[COLOR_SCALE_COUNT][64] =
{
" 1 常规灰度编码",
" 2 逆灰度编码",
" 3 红色饱和度编码",
" 4 绿色饱和度编码",
" 5 蓝色饱和度编码",
" 6 黄色饱和度编码",
" 7 青色饱和度编码",
" 8 紫色饱和度编码",
};
// 编码表RGB数组
const BYTE ColorsTable[COLOR_SCALE_COUNT][256][4] =
{
{ // 红色饱和度编码
{ 0, 0, 0 }, { 1, 0, 0 }, { 2, 0, 0 }, { 3, 0, 0 }, //4
{ 4, 0, 0 }, { 5, 0, 0 }, { 6, 0, 0 }, { 7, 0, 0 }, //8
{ 8, 0, 0 }, { 9, 0, 0 }, { 10, 0, 0 }, { 11, 0, 0 }, //12
{ 12, 0, 0 }, { 13, 0, 0 }, { 14, 0, 0 }, { 15, 0, 0 }, //16
{ 16, 0, 0 }, { 17, 0, 0 }, { 18, 0, 0 }, { 19, 0, 0 }, //20
… … … …
{ 224, 0, 0 }, { 225, 0, 0 }, { 226, 0, 0 }, { 227, 0, 0 }, //228
{ 228, 0, 0 }, { 229, 0, 0 }, { 230, 0, 0 }, { 231, 0, 0 }, //232
{ 232, 0, 0 }, { 233, 0, 0 }, { 234, 0, 0 }, { 235, 0, 0 }, //236
{ 236, 0, 0 }, { 237, 0, 0 }, { 238, 0, 0 }, { 239, 0, 0 }, //240
{ 240, 0, 0 }, { 241, 0, 0 }, { 242, 0, 0 }, { 243, 0, 0 }, //244
{ 244, 0, 0 }, { 245, 0, 0 }, { 246, 0, 0 }, { 247, 0, 0 }, //248
{ 248, 0, 0 }, { 249, 0, 0 }, { 250, 0, 0 }, { 251, 0, 0 }, //252
{ 252, 0, 0 }, { 253, 0, 0 }, { 254, 0, 0 }, { 255, 0, 0 }, //256
},// 规律:R=i,G=B=0;i=0 to 255

{ // 绿色饱和度编码
{ 0, 0, 0 }, { 0, 1, 0 }, { 0, 2, 0 }, { 0, 3, 0 }, //4
{ 0, 4, 0 }, { 0, 5, 0 }, { 0, 6, 0 }, { 0, 7, 0 }, //8
{ 0, 8, 0 }, { 0, 9, 0 }, { 0, 10, 0 }, { 0, 11, 0 }, //12
{ 0, 12, 0 }, { 0, 13, 0 }, { 0, 14, 0 }, { 0, 15, 0 }, //16
{ 0, 16, 0 }, { 0, 17, 0 }, { 0, 18, 0 }, { 0, 19, 0 }, //20
{ 0, 20, 0 }, { 0, 21, 0 }, { 0, 22, 0 }, { 0, 23, 0 }, //24
… … … …
{ 0,224, 0 }, { 0,225, 0 }, { 0,226, 0 }, { 0,227, 0 }, //228
{ 0,228, 0 }, { 0,229, 0 }, { 0,230, 0 }, { 0,231, 0 }, //232
{ 0,232, 0 }, { 0,233, 0 }, { 0,234, 0 }, { 0,235, 0 }, //236
{ 0,236, 0 }, { 0,237, 0 }, { 0,238, 0 }, { 0,239, 0 }, //240
{ 0,240, 0 }, { 0,241, 0 }, { 0,242, 0 }, { 0,243, 0 }, //244
{ 0,244, 0 }, { 0,245, 0 }, { 0,246, 0 }, { 0,247, 0 }, //248
{ 0,248, 0 }, { 0,249, 0 }, { 0,250, 0 }, { 0,251, 0 }, //252
{ 0,252, 0 }, { 0,253, 0 }, { 0,254, 0 }, { 0,255, 0 }, //256
},// 规律:G=i,R=B=0;for i=0 to 255

{ // 蓝色饱和度编码
{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 2 }, { 0, 0, 3 }, //4
{ 0, 0, 4 }, { 0, 0, 5 }, { 0, 0, 6 }, { 0, 0, 7 }, //8
{ 0, 0, 8 }, { 0, 0, 9 }, { 0, 0, 10 }, { 0, 0, 11 }, //12
{ 0, 0, 12 }, { 0, 0, 13 }, { 0, 0, 14 }, { 0, 0, 15 }, //16
{ 0, 0, 16 }, { 0, 0, 17 }, { 0, 0, 18 }, { 0, 0, 19 }, //20
{ 0, 0, 20 }, { 0, 0, 21 }, { 0, 0, 22 }, { 0, 0, 23 }, //24
… … … …
{ 0, 0,244 }, { 0, 0,245 }, { 0, 0,246 }, { 0, 0,247 }, //248
{ 0, 0,248 }, { 0, 0,249 }, { 0, 0,250 }, { 0, 0,251 }, //252
{ 0, 0,252 }, { 0, 0,253 }, { 0, 0,254 }, { 0, 0,255 }, //256
},// 规律:B=i,R=G=0;for i=0 to 255

{ // 黄色饱和度编码
{ 0, 0, 0 }, { 1, 1, 0 }, { 2, 2, 0 }, { 3, 3, 0 }, //4
{ 4, 4, 0 }, { 5, 5, 0 }, { 6, 6, 0 }, { 7, 7, 0 }, //8
{ 8, 8, 0 }, { 9, 9, 0 }, { 10, 10, 0 }, { 11, 11, 0 }, //12
{ 12, 12, 0 }, { 13, 13, 0 }, { 14, 14, 0 }, { 15, 15, 0 }, //16
{ 16, 16, 0 }, { 17, 17, 0 }, { 18, 18, 0 }, { 19, 19, 0 }, //20
{ 20, 20, 0 }, { 21, 21, 0 }, { 22, 22, 0 }, { 23, 23, 0 }, //24
… … … …
{ 228,228, 0 }, { 229,229, 0 }, { 230,230, 0 }, { 231,231, 0 }, //232
{ 232,232, 0 }, { 233,233, 0 }, { 234,234, 0 }, { 235,235, 0 }, //236
{ 236,236, 0 }, { 237,237, 0 }, { 238,238, 0 }, { 239,239, 0 }, //240
{ 240,240, 0 }, { 241,241, 0 }, { 242,242, 0 }, { 243,243, 0 }, //244
{ 244,244, 0 }, { 245,245, 0 }, { 246,246, 0 }, { 247,247, 0 }, //248
{ 248,248, 0 }, { 249,249, 0 }, { 250,250, 0 }, { 251,251, 0 }, //252
{ 252,252, 0 }, { 253,253, 0 }, { 254,254, 0 }, { 255,255, 0 }, //256
},// 规律:R=G=i,B=0;for i=0 to 255

{ // 青色饱和度编码
{ 0, 0, 0 }, { 0, 1, 1 }, { 0, 2, 2 }, { 0, 3, 3 }, //4
{ 0, 4, 4 }, { 0, 5, 5 }, { 0, 6, 6 }, { 0, 7, 7 }, //8
{ 0, 8, 8 }, { 0, 9, 9 }, { 0, 10, 10 }, { 0, 11, 11 }, //12
{ 0, 12, 12 }, { 0, 13, 13 }, { 0, 14, 14 }, { 0, 15, 15 }, //16
{ 0, 16, 16 }, { 0, 17, 17 }, { 0, 18, 18 }, { 0, 19, 19 }, //20
{ 0, 20, 20 }, { 0, 21, 21 }, { 0, 22, 22 }, { 0, 23, 23 }, //24
{ 0, 24, 24 }, { 0, 25, 25 }, { 0, 26, 26 }, { 0, 27, 27 }, //28
… … … …
{ 0,232,232 }, { 0,233,233 }, { 0,234,234 }, { 0,235,235 }, //236
{ 0,236,236 }, { 0,237,237 }, { 0,238,238 }, { 0,239,239 }, //240
{ 0,240,240 }, { 0,241,241 }, { 0,242,242 }, { 0,243,243 }, //244
{ 0,244,244 }, { 0,245,245 }, { 0,246,246 }, { 0,247,247 }, //248
{ 0,248,248 }, { 0,249,249 }, { 0,250,250 }, { 0,251,251 }, //252
{ 0,252,252 }, { 0,253,253 }, { 0,254,254 }, { 0,255,255 }, //256
},// 规律:B=G=i, R=0; for i=0 to 255

{ // 紫色饱和度编码
{ 0, 0, 0 }, { 1, 0, 1 }, { 2, 0, 2 }, { 3, 0, 3 }, //4
{ 4, 0, 4 }, { 5, 0, 5 }, { 6, 0, 6 }, { 7, 0, 7 }, //8
{ 8, 0, 8 }, { 9, 0, 9 }, { 10, 0, 10 }, { 11, 0, 11 }, //12
{ 12, 0, 12 }, { 13, 0, 13 }, { 14, 0, 14 }, { 15, 0, 15 }, //16
{ 16, 0, 16 }, { 17, 0, 17 }, { 18, 0, 18 }, { 19, 0, 19 }, //20
{ 20, 0, 20 }, { 21, 0, 21 }, { 22, 0, 22 }, { 23, 0, 23 }, //24
… … … …
{ 228, 0,228 }, { 229, 0,229 }, { 230, 0,230 }, { 231, 0,231 }, //232
{ 232, 0,232 }, { 233, 0,233 }, { 234, 0,234 }, { 235, 0,235 }, //236
{ 236, 0,236 }, { 237, 0,237 }, { 238, 0,238 }, { 239, 0,239 }, //240
{ 240, 0,240 }, { 241, 0,241 }, { 242, 0,242 }, { 243, 0,243 }, //244
{ 244, 0,244 }, { 245, 0,245 }, { 246, 0,246 }, { 247, 0,247 }, //248
{ 248, 0,248 }, { 249, 0,249 }, { 250, 0,250 }, { 251, 0,251 }, //252
{ 252, 0,252 }, { 253, 0,253 }, { 254, 0,254 }, { 255, 0,255 }, //256
}//规律:R=B=i,G=0; for i =0 to 255

// 编码表结束
};