zoukankan      html  css  js  c++  java
  • 彩色图像--图像切 色彩空间切割

    得知DIP最后一天
    转载请注明文章出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处。文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

    开篇废话

    本系列最后一篇。兴许的文章将在其它系列中编写。本想把小波也放在这个系列,但感觉近期写小波有点困难,这里学习环境不好,所想去写点好玩的,比方模式识别。图像特征点什么的,希望大家继续关注。

    算法原理

    多通道图像的简单切割。能够给定阈值向量,然后给定范围,能够是三维的球形,或者立方体,这个就要看详细的设计了,比方举个简单的样例,给定RGB中心阈值为T⃗ (R0,G0,B0),阈值为100。那么对于像素点(x,y)处的色彩向量I⃗ (Rxy,Gxy,Bxy)
    那么仅仅要满足

    |T⃗ I⃗ |<100

    的点满足要求,为目标点。否则为背景点。


    算法相同适用于其它色彩空间。但要依据详细情况来设计,所以灵活性非常强。

    代码

    double Chanel3Distance(RGB point1,RGB point2){
        return sqrt((point1.c1-point2.c1)*(point1.c1-point2.c1)+
                    (point1.c2-point2.c2)*(point1.c2-point2.c2)+
                    (point1.c3-point2.c3)*(point1.c3-point2.c3));
    
    
    }
    void SegmentRGB(RGB* src,RGB *dst,int width,int height,RGB * color_center,double threshold){
        double distance=0.0;
        for(int i=0;i<width*height;i++){
            distance=Chanel3Distance(src[i], *color_center);
            if(distance<=threshold){
                dst[i].c1=src[i].c1;
                dst[i].c2=src[i].c2;
                dst[i].c3=src[i].c3;
            }else{
                dst[i].c1=0.;
                dst[i].c2=0.;
                dst[i].c3=0.;
            }
        }
    }
    

    结果分析

    以下简单的切割和平滑,然后进行合并。


    原图:

    这里写图片描写叙述

    切割(使用简单的RGB模型,肤色切割点简单选取,所以效果不是非常好):

    这里写图片描写叙述

    平滑后合并

    这里写图片描写叙述

    原图:

    这里写图片描写叙述

    切割结果:

    这里写图片描写叙述

    总结

    至此用了70几天简单的介绍了图像处理的基础知识。特定的应用由于不具有行业通用性。所以将会有选择的进行学习,感谢自己一路坚持了几个月,感谢大家一直的支持,希望大家的技术进步。
    本系列结束。


    技术。待续。

    。。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    c# 三种取整方法 向上取整 向下取整 四舍五入
    Lambda表达式对DataRow处理
    Dapper数据库字段和model属性映射
    union limit
    北邮五十题
    搜索____深搜 学易错点
    动态规划____有重叠子问题的搜索,都可以转为记忆化搜索
    64位 __int 与 long long写法
    做做 卡特兰数 与 卡米歇尔数
    vector 有点麻烦啊 能简单点么?
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4793565.html
Copyright © 2011-2022 走看看