彩色图像--彩色变换 补色处理
来源:互联网 发布:淘宝网大码女装胖胖 编辑:程序博客网 时间:2024/04/27 19:24
学习DIP第69天
转载请标明本文出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro
开篇废话
啊啊啊啊啊。。。办公室好乱。像菜市场那个一样,说好的做一个安静的美男子呢。
彩色图像处理中彩色变换是指
其中
要顺便说下HSI在0°和360°处是个不连续的点,而且饱和度为0是色相未定义。
今天开始介绍真彩色图像,也包括多通道图像,补色处理就是根据色环,将现有颜色的色相反转180°,得到新的色相,这个变化的用途不知道,一个很一般的也很常见的应用是RGB带CMY的变化,不过,别的好像目前没听说过什么处理要把图像变成补色后才能处理。
算法原理
算法原理很简单,找到补色,等位替换就好。
色环牛顿老爷子发明的,没有错,就是那个被苹果砸了的牛顿,不得不说,牛顿是位大师级的人物,色环如下:
这个色环可能不是牛顿老爷子的色环,但通过这个来展示下补色就是一条直径上两端的颜色。
对于RGB图像,补色是对应的CMY图像
对于HSI和HSV图像,H分量需要进行相应的旋转,而亮度分量也需要相应的反转,而饱和度不变,能够得到类似的补色效果。
代码实现
void Complementary_Color(C3 *src,C3 *dst,int width,int height,int color_space_type){ switch (color_space_type) { case COLOR_SPACE_RGB: RGB2CMY(src, dst, width, height); break; case COLOR_SPACE_CMY: CMY2RGB(src, dst, width, height); break; case COLOR_SPACE_HSI:{ for(int i=0;i<width*height;i++){ double h=src[i].c1; if(h>=M_PI) dst[i].c1=h-M_PI; else dst[i].c1=M_PI+h; dst[i].c2=src[i].c2; dst[i].c3=255.-src[i].c3; } break; } case COLOR_SPACE_HSV:{ for(int i=0;i<width*height;i++){ double h=src[i].c1; if(h>=180.0) dst[i].c1=h-180.0; else dst[i].c1=180.0+h; dst[i].c2=src[i].c2; dst[i].c3=1.0-src[i].c3; } break; } default: break; }}
结果观察
原图:
RGB:
HSI:
HSV:
Paintbrush:
总结
简单的介绍了最简单的色彩变换,补色变换,可以看出HSI,HSV和RGB处理的结果有些不同,而PaintBrush处理和我处理都不同,不知道它使用的什么算法。
待续。。。
3 0
- 彩色图像--彩色变换 补色处理
- Matlab彩色图像处理
- 彩色图像处理
- 彩色图像处理
- 彩色图像处理
- 彩色图像处理
- matlab 彩色图像处理
- 彩色图像平滑处理
- 彩色图像处理
- 彩色图像处理总结
- 彩色图像处理
- 彩色图像处理
- 彩色图像处理
- 彩色图像变换为灰度图像
- Delphi图像处理 -- 彩色浮雕
- 彩色图像直方图均衡处理
- 处理彩色图像快速方法
- 【python图像处理】彩色映射
- 使用Autolayout xib实现动态高度的TableViewCell
- HttpClient学习笔记
- myeclipse10 的破解问题
- java:--l;l--;l-1
- Unity3D游戏引擎实战开发视频教程
- 彩色图像--彩色变换 补色处理
- Android中Video的三种播放方式的实现
- 有向图强连通分量的Tarjan算法
- DNS递归查询和迭代查询的区别
- 第2周项目2长方体
- 取得指定长度的随机数
- 自己整理的ios app实现自动升级
- Ubuntu Ruby On Rails安装和配置
- IOS 验证手机号格式