zoukankan      html  css  js  c++  java
  • 彩色图像--彩色变换 补色处理

    学习DIP第69天
    转载请标明本文出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!

    文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

    开篇废话

    啊啊啊啊啊。

    。。

    办公室好乱。

    像菜市场那个一样。说好的做一个安静的美男子呢。
    彩色图像处理中彩色变换是指

    g(x,y)=T[f(x,y)]

    当中fg为返回结果是向量的函数,T是x,y空间上对f的一个算子。
    要顺便说下HSI在0°和360°处是个不连续的点,并且饱和度为0是色相没有定义。
    今天開始介绍真彩色图像。也包含多通道图像。补色处理就是依据色环。将现有颜色的色相反转180°。得到新的色相,这个变化的用途不知道,一个非常一般的也非经常见的应用是RGB带CMY的变化,只是。别的好像眼下没听说过什么处理要把图像变成补色后才干处理。

    算法原理

    算法原理非常easy,找到补色,等位替换就好。
    色环牛顿老爷子发明的,没有错,就是那个被苹果砸了的牛顿,不得不说,牛顿是位大师级的人物,色环例如以下:
    这里写图片描写叙述
    这个色环可能不是牛顿老爷子的色环,但通过这个来展示下补色就是一条直径上两端的颜色。


    对于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处理和我处理都不同。不知道它使用的什么算法。
    待续。。。

  • 相关阅读:
    win11系统无法解决的死结
    python多线程2线程应用
    python多线程3线程同步
    python多线程3.1同步测试例子
    python多线程1线程创建
    最近总是淡淡的····
    ASP.NET MVC 中如何实现基于角色的权限控制
    【转】Visual C++ ADO数据库编程入门
    【转】Windows窗体消息汇总
    【转】数据库设计中的14个技巧
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5215171.html
Copyright © 2011-2022 走看看