zoukankan      html  css  js  c++  java
  • OpenCV —— 图像处理

    使用图像结构中所定义的高层处理方法(图形和视觉范畴)来完成特定任务

    平滑处理   cvSmooth

    处理后图像与输入图像的大小相同(不用考虑边缘)

    中值滤波  CV_MEDIAN 不支持 in place 操作 , 高斯滤波 CV_GAUSSIAN 支持 in place 操作(可以设置高斯核不对称,双边滤波——高斯平滑,水彩画处理,可用于图像分割)

    图像形态学

    膨胀 —— 把二值图像各像素连接成分的边界扩大一层,填充边缘或像素内部的孔;使灰度图像高亮区域逐渐增长

    腐蚀 —— 把二值图像各像素连接成分的边界点去掉从而缩小一层(去掉毛刺);使灰度图像高亮区减少

    cvErode cvDilate

    自定义核  IplConvKernel —— cvCreateStructuringElementEx()函数创建 ,由 cvReleaseStructuringElement() 函数释放

    形态核与卷积核不同,不需要任何的数值填充核

    更通用的形态学 —— cvMorphologyEx —— 开闭运算,形态梯度,礼帽,黑帽

    开运算 —— 先腐蚀然后膨胀 (可用来统计二值图像中的区域数)

    闭运算 —— 先膨胀然后腐蚀 —— 对于连通区域分析,通常先采用腐蚀或闭运算来消除纯粹由噪声引起的部分,然后用开运算来连接相邻的区域

    闭运算消除了低于其临近点的孤立点,开运算消除了高于其临近点的孤立点

    形态学梯度 = 膨胀 - 腐蚀 —— 对二值图像进行这一操作可将团块的边缘突出出来(描述图像亮度变化的剧烈程度)

    礼帽   Top Hat = src – open(src) (开运算带来的结果是放大裂缝或是局部低亮度区域,所以礼帽操作将局部亮度极大点分割出来)

    黑帽   Black Hat = close(src) – src  黑色的洞被分割出来

    漫水填充算法 —— 标记或分离图像的一部分以便对其进行进一步处理

    在图像上选择一个种子点,然后把临近区域所有相似点填充上同样的颜色,漫水填充的结果总是某个连续的区域

    cvFloodFill  可设置掩码,cvFloodFill 不会覆盖mask的非0像素点   flags —— 算法的连通性,填充掩码图像的值,CV_FLOODFILL_FIXED_RANGE

    图像尺寸调整  —— cvResize 如果源图象设置了ROI,cvResize 将会对ROI区域调整尺寸,以匹配目标图像,若目标图像设置了ROI,那么。。。。(可以选择不同的插值方式)

    图像金字塔 —— 连续降采样

    cvPyrDown —— 先用高斯核卷积,然后删除所有偶数行和偶数列  —— 丢失一定量信息

    cvPyrUp —— 图像首先在每个维度上扩大为原来的两倍,新增的行列以0填充,然后给指定的滤波器进行卷积

    图像分割 —— 快速初始分割先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化  ——  cvPyrSegmentation

    由于图像金字塔各层的长和宽都必须是整数,所以起始图像的长和宽都能够被2整除,并且能够被2整除的次数不少于金字塔的总层数

    CvMemStorage * storage = cvCreateMemStorage()

    #include <cv.h>
    #include <highgui.h>
    
    int main(int argc,char** argv)
    {
        IplImage *src=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_UNCHANGED);
        IplImage *dst=cvCreateImage(cvSize(src->width,src->height),src->depth,src->nChannels);
        CvMemStorage* storage=cvCreateMemStorage(0);
        CvSeq* comp=NULL;
        cvPyrSegmentation(src,dst,storage,&comp,4,200,50);
        int n_comp=comp->total;
    
        for (int i=0;i<n_comp;i++)
        {
            CvConnectedComp* cc=(CvConnectedComp*)cvGetSeqElem(comp,i);
    
            // ..... 怎么处理还没想好
    
        }
    
        cvReleaseMemStorage(&storage);
        return 0;
    }

    CvConnectedComponent —— 图像团块

    area 区域面积,value 区域颜色的平均值,rect 是一个区域的外接矩形,contour 是一个指向另一个序列的指针


    阈值化

    cvThreshold

    cvAdaptiveThreshold  大津法,OTSU —— 按图像的灰度特性,将图像分成背景和目标2部分,背景和目标之间的类间方差越大,说明构成图像的的2部分的差别越大,当部分目标错为背景或反之都会使2部分差别变小

    #include <cv.h>
    #include <highgui.h>
    #include <math.h>
    
    IplImage *Igray=0, *It=0,*Iat;
    
    int main(int argc,char** argv)
    {
        int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;
        int threshold_type=CV_THRESH_BINARY;
        int block_size=9;
        double offset=5;
    
        Igray=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_GRAYSCALE);
        
        Iat=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,1);
    
        cvAdaptiveThreshold(Igray,Iat,255,adaptive_method,threshold_type,block_size,offset);
    
        cvNamedWindow("w1");
        cvNamedWindow("w2");
        cvShowImage("w1",Iat);
        cvShowImage("w2",Igray);
        cvWaitKey();
    
        cvReleaseImage(&Iat);
        cvDestroyAllWindows();
    
        return 0;
    }

    dd

    ss

  • 相关阅读:
    centos8上安装中文字符集
    python使用p12个人证书发送S/MIME加密,签名邮件
    linux 下如何获取 cpu 温度
    [官网]Apache Log4j2 最新版安全提示 2.17.0
    电子书下载:Beginning Windows Phone 7 Development
    沙发的含义
    电子书下载:Windows Phone 7 Developer Guide: Building connected mobile applications with Microsoft Silverlight
    电子书下载:The Rails 3 Way, 2nd Edition
    Enfocus Pitstop 7.52 汉化破解版安装
    电子书下载:Professional Flash Mobile Development: Creating Android and iPhone Applications
  • 原文地址:https://www.cnblogs.com/sprint1989/p/3806462.html
Copyright © 2011-2022 走看看