精华内容
下载资源
问答
  • 作为一门实用而综合性的边缘学科,数字图像模式识别技术研究的内容主要包括图像变换、图像增强、图像特征提取、图像识别,以及运动图像分析等。本书将以实践为导向,以实用为目标来介绍这些重要的数字图像模式识别...

    1e75d2e8ae299efba1280292d025352f23c6ce2f

    前言

    作为一门实用而综合性的边缘学科,数字图像模式识别技术研究的内容主要包括图像变换、图像增强、图像特征提取、图像识别,以及运动图像分析等。本书将以实践为导向,以实用为目标来介绍这些重要的数字图像模式识别技术。在介绍数字图像模式识别技术基础理论及算法原理的同时,重点介绍如何用Visual C++实现这些典型及常用算法,并结合实际应用介绍作者所在实验室近年来研究总结出来的一些经典案例,尽量做到理论、应用与实际编程紧密结合,使读者掌握用Visual C++进行图像模式识别技术编程的基本方法和技巧。
    本书内容丰富、层次清晰,所介绍的内容具有较强的实践性和应用性。在学完本书之后,相信读者能够在充分了解数字图像模式识别技术基础理论和经典算法的基础上,掌握进行实际项目开发的方法。
    本书特点
    本书主要有以下特点。

    循序渐进,由浅入深

    为了方便读者学习,本书全部实例程序均采用同一个应用程序界面。从基于Visual C++构建应用程序界面,到增加图像处理功能,再到最终的数字图像模式识别经典实例的实现,全书内容前后连贯,互相依托,构成一个整体。使读者高效地掌握基于Visual C++实现数字图像模式识别技术的基本方法。

    技术全面,内容充实

    本书以理论和编程实践相结合的方式介绍了数字图像模式识别技术的常用算法。按照数字图像模式识别技术的基本体系结构,从数字图像模式识别技术基础知识、数字图像处理应用、数字模式识别技术实例3个层次组织内容,并有机地结合了数字图像模式识别技术、软件开发方面的专业知识。

    对比讲解,理解深刻

    本书采用图文并茂、对比讲解的方式,详细介绍算法实现的每一个步骤。希望这种讲解方式,能帮助读者加深、加快对Visual C++数字图像模式识别技术的理解。

    代码完整,讲解详尽

    书中的每个知识点都有相应的实例代码,并对关键的代码部分进行了注释说明。每段代码的后面都有详细的分析,并给出了代码运行后的结果。读者可以参照运行结果阅读源程序,以便加深理解。

    目录

    第1章 绪论
    1.1 数字图像处理概述
    1.1.1 数字图像获取
    1.1.2 图像显示与存储
    1.1.3 数字图像文件
    1.1.4 数字图像处理
    1.2 模式识别基本概念
    1.2.1 模式和模式识别的概念
    1.2.2 模式空间、特征空间和类别空间
    1.2.3 模式识别系统的组成
    1.2.4 数字图像模式识别
    1.3 实践知识拓展

    第2章 Visual C++数字图像处理基础
    2.1 Visual C++编程方法
    2.1.1 面向对象编程
    2.1.2 MFC类
    2.1.3 程序框架
    2.1.4 集成开发环境
    2.1.5 生成多文档应用程序
    2.2 Visual C++数字图像处理
    2.2.1 BMP图像文件
    2.2.2 位图文件读取
    2.2.3 图像增强
    2.2.4 图像形态学处理
    2.2.5 图像分割
    2.3 实践知识拓展

    第3章 图像特征
    3.1 统计特征
    3.2 幅值特征
    3.3 几何特征
    3.3.1 位置与方向
    3.3.2 周长
    3.3.3 面积
    3.3.4 长轴与短轴
    3.3.5 距离
    3.4 形状特征
    3.4.1 多边形描述
    3.4.2 曲线描述
    3.4.3 标记
    3.4.4 矩形度
    3.4.5 圆形度
    3.4.6 不变矩
    3.4.7 偏心率
    3.5 纹理特征
    3.5.1 纹理
    3.5.2 纹理分析
    3.6 实践知识拓展

    展开全文
  • Visual C++数字图像处理技术详解.zip

    热门讨论 2013-11-03 10:56:54
    《Visual C++数字图像处理技术详解》以数字图像处理技术为主线,全面地介绍在Visual C++环境下进行数字图像处理程序设计的方法。内容涵盖了数字图像的变换、增强、复原、重建、形态学处理、分割、匹配、压缩编码、...
  • 车牌识别技术原理 图13-15 采集到的原始图像 车牌识别系统涉及的核心技术主要包括车牌定位、字符分割和字符识别。其中,车牌定位和字符分割技术属于数字图像处理技术范畴,而字符识别则属于模式识别技术范畴。下面...
  • 车型识别系统原理 车型识别系统涉及的核心技术包括基于背景去除的目标分割技术、车型特征提取技术和车型分类识别技术。 1.基于背景去除的目标分割技术 车型识别的第一步就是从图像中分割出目标车辆,然而摄像机拍摄...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~

    这篇万字文章一方面是感谢大家读这个专栏的喜欢,另一方面圣诞节、元旦节、情人节要到了,送给大家拿去表白或美化自己吧!哈哈。前面一篇文章介绍了两个重要的算法——傅里叶变换和霍夫变换。这篇文章将介绍12种常见的图像处理特效,万字长文整理,希望对您有所帮助。同时,该部分知识均为作者查阅资料撰写总结,并且开设成了收费专栏,为小宝赚点奶粉钱,感谢您的抬爱。当然如果您是在读学生或经济拮据,可以私聊我给你每篇文章开白名单,或者转发原文给你,更希望您能进步,一起加油喔~

    前文参考:
    [Python图像处理] 一.图像处理基础知识及OpenCV入门函数
    [Python图像处理] 二.OpenCV+Numpy库读取与修改像素
    [Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
    [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波
    [Python图像处理] 五.图像融合、加法运算及图像类型转换
    [Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移
    [Python图像处理] 七.图像阈值化处理及算法对比
    [Python图像处理] 八.图像腐蚀与图像膨胀
    [Python图像处理] 九.形态学之图像开运算、闭运算、梯度运算
    [Python图像处理] 十.形态学之图像顶帽运算和黑帽运算
    [Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
    [Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正
    [Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算
    [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
    [Python图像处理] 十五.图像的灰度线性变换
    [Python图像处理] 十六.图像的灰度非线性变换之对数变换、伽马变换
    [Python图像处理] 十七.图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子
    [Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子
    [Python图像处理] 十九.图像分割之基于K-Means聚类的区域分割
    [Python图像处理] 二十.图像量化处理和采样处理及局部马赛克特效
    [Python图像处理] 二十一.图像金字塔之图像向下取样和向上取样
    [Python图像处理] 二十二.Python图像傅里叶变换原理及实现
    [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
    [Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效
    [Python图像处理] 二十五.图像特效处理之素描、怀旧、光照、流年以及滤镜特效
    [Python图像处理] 二十六.图像分类原理及基于KNN、朴素贝叶斯算法的图像分类案例
    [Python图像处理] 二十七.OpenGL入门及绘制基本图形(一)
    [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸
    [Python图像处理] 二十九.MoviePy视频编辑库实现抖音短视频剪切合并操作
    [Python图像处理] 三十.图像量化及采样处理万字详细总结(推荐)
    [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)
    [Python图像处理] 三十二.傅里叶变换(图像去噪)与霍夫变换(特征识别)万字详细总结
    [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)


    前面文章围绕Python图像处理,从图像基础操作、几何变换、点运算、直方图、图像增强、图像平滑、图像锐化等方面进行了详细讲解。本篇文章将继续补充常见的图像特效处理,从而让读者实现各种各样的图像特殊效果。

    一.图像毛玻璃特效

    图像毛玻璃特效如下图所示,左边为原始图像,右边为毛玻璃特效图像。它是用图像邻域内随机一个像素点的颜色来替代当前像素点颜色的过程,从而为图像增加一个毛玻璃模糊的特效。

    在这里插入图片描述

    Python实现代码主要是通过双层循环遍历图像的各像素点,再用定义的随机数去替换各邻域像素点的颜色,具体代码如下所示。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    
    #读取原始图像
    src = cv2.imread('scenery.png')
    
    #新建目标图像
    dst = np.zeros_like(src)
    
    #获取图像行和列
    rows, cols = src.shape[:2]
    
    #定义偏移量和随机数
    offsets = 5
    random_num = 0
    
    #毛玻璃效果: 像素点邻域内随机像素点的颜色替代当前像素点的颜色
    for y in range(rows - offsets):
        for x in range(cols - offsets):
            random_num = np.random.randint(0,offsets)
            dst[y,x] = src[y + random_num,x + random_num]
    
    #显示图像
    cv2.imshow('src',src)
    cv2.imshow('dst',dst)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    二.图像浮雕特效

    图像浮雕特效是仿造浮雕艺术而衍生的处理,它将要呈现的图像突起于石头表面,根据凹凸程度不同形成三维的立体效果。Python绘制浮雕图像是通过勾画图像的轮廓,并降低周围的像素值,从而产生一张具有立体感的浮雕效果图。传统的方法是设置卷积核,再调用OpenCV的filter2D()函数实现浮雕特效。该函数主要是利用内核实现对图像的卷积运算,其函数原型如下所示:

    • dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
      – src表示输入图像
      – dst表示输出的边缘图,其大小和通道数与输入图像相同
      – ddepth表示目标图像所需的深度
      – kernel表示卷积核,一个单通道浮点型矩阵
      – anchor表示内核的基准点,其默认值为(-1,-1),位于中心位置
      – delta表示在储存目标图像前可选的添加到像素的值,默认值为0
      – borderType表示边框模式

    核心代码如下:

    kernel = np.array([[-1,0,0],[0,1,0],[0,0,0]])
    output = cv2.filter2D(src, -1, kernel)

    该部分将直接对各像素点进行处理,采用相邻像素相减的方法来得到图像轮廓与平面的差,类似边缘的特征,从而获得这种立体感的效果。为了增强图片的主观感受,还可以给这个差加上一个固定值,如150。实现效果如下图所示。

    在这里插入图片描述

    Python通过双层循环遍历图像的各像素点,使用相邻像素值之差来表示当前像素值,从而得到图像的边缘特征,最后加上固定数值150得到浮雕效果,具体代码如下所示。

    # -*- coding: utf-8 -*-
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('scenery.png', 1)
    
    #获取图像的高度和宽度
    height, width = img.shape[:2]
    
    #图像灰度处理
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    #创建目标图像
    dstImg = np.zeros((height,width,1),np.uint8)
    
    #浮雕特效算法:newPixel = grayCurrentPixel - grayNextPixel + 150
    for i in range(0,height):
        for j in range(0,width-1):
            grayCurrentPixel = int(gray[i,j])
            grayNextPixel = int(gray[i,j+1])
            newPixel = grayCurrentPixel - grayNextPixel + 150
            if newPixel > 255:
                newPixel = 255
            if newPixel < 0:
                newPixel = 0
            dstImg[i,j] = newPixel
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst',dstImg)
    
    #等待显示
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    三.图像油漆特效

    图像油漆特效类似于油漆染色后的轮廓图形,它主要采用自定义卷积核和cv2.filter2D()函数实现,其运行结果如下图所示。

    在这里插入图片描述

    Python实现代码主要通过Numpy定义卷积核,再进行特效处理,卷积核如公式(1)所示,其中心权重为10,其余值均为-1。

    在这里插入图片描述

    # -*- coding: utf-8 -*-
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    src = cv2.imread('scenery.png')
    
    #图像灰度处理
    gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
    
    #自定义卷积核
    kernel = np.array([[-1,-1,-1],[-1,10,-1],[-1,-1,-1]])
    #kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])
    
    #图像浮雕效果
    output = cv2.filter2D(gray, -1, kernel)
    
    #显示图像
    cv2.imshow('Original Image', src)
    cv2.imshow('Emboss_1',output)
    
    #等待显示
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    四.图像素描特效

    图像素描特效会将图像的边界都凸显出来,通过边缘检测及阈值化处理能实现该功能。一幅图像的内部都具有相似性,而在图像边界处具有明显的差异,边缘检测利用数学中的求导来扩大这种变化。但是求导过程中会增大图像的噪声,所以边缘检测之前引入了高斯滤波降噪处理。本小节的图像素描特效主要经过以下几个步骤:

    • (1) 调用cv2.cvtColor()函数将彩色图像灰度化处理;
    • (2) 通过cv2.GaussianBlur()函数实现高斯滤波降噪;
    • (3) 边缘检测采用Canny算子实现;
    • (4) 最后通过cv2.threshold()反二进制阈值化处理实现素描特效。

    其运行代码如下所示。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('scenery.png')
    
    #图像灰度处理
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    #高斯滤波降噪
    gaussian = cv2.GaussianBlur(gray, (5,5), 0)
     
    #Canny算子
    canny = cv2.Canny(gaussian, 50, 150)
    
    #阈值化处理
    ret, result = cv2.threshold(canny, 100, 255, cv2.THRESH_BINARY_INV)
    
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('result', result)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    最终输出结果如下图所示,它将彩色图像素描处理。

    在这里插入图片描述

    图像的素描特效有很多种方法,本小节仅提供了一种方法,主要提取的是图像的边缘轮廓,还有很多更精细的素描特效方法,提取的轮廓更为清晰,如下图所示。希望读者能自行扩展相关算法知识,并实现对应的效果。参考何老师翻译的文章,推荐大家学习。

    在这里插入图片描述

    完整代码如下:

    #coding:utf-8
    import cv2
    import numpy as np
     
    def dodgeNaive(image, mask):
        # determine the shape of the input image
        width, height = image.shape[:2]
     
        # prepare output argument with same size as image
        blend = np.zeros((width, height), np.uint8)
     
        for col in range(width):
            for row in range(height):
                # do for every pixel
                if mask[col, row] == 255:
                    # avoid division by zero
                    blend[col, row] = 255
                else:
                    # shift image pixel value by 8 bits
                    # divide by the inverse of the mask
                    tmp = (image[col, row] << 8) / (255 - mask)
                    # print('tmp={}'.format(tmp.shape))
                    # make sure resulting value stays within bounds
                    if tmp.any() > 255:
                        tmp = 255
                        blend[col, row] = tmp
        return blend
     
    def dodgeV2(image, mask):
        return cv2.divide(image, 255 - mask, scale=256)
     
    def burnV2(image, mask):
        return 255 - cv2.divide(255 - image, 255 - mask, scale=256)
     
    def rgb_to_sketch(src_image_name, dst_image_name):
        img_rgb = cv2.imread(src_image_name)
        img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
        # 读取图片时直接转换操作
        # img_gray = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
     
        img_gray_inv = 255 - img_gray
        img_blur = cv2.GaussianBlur(img_gray_inv, ksize=(21, 21),
                                    sigmaX=0, sigmaY=0)
        img_blend = dodgeV2(img_gray, img_blur)
     
        cv2.imshow('original', img_rgb)
        cv2.imshow('gray', img_gray)
        cv2.imshow('gray_inv', img_gray_inv)
        cv2.imshow('gray_blur', img_blur)
        cv2.imshow("pencil sketch", img_blend)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
        cv2.imwrite(dst_image_name, img_blend)
     
    if __name__ == '__main__':
        src_image_name = 'scenery.png'
        dst_image_name = 'sketch_example.jpg'
        rgb_to_sketch(src_image_name, dst_image_name)
    

    五.图像怀旧特效

    图像怀旧特效是指图像经历岁月的昏暗效果,如图13-6所示,左边“src”为原始图像,右边“dst”为怀旧特效图像。

    在这里插入图片描述

    怀旧特效是将图像的RGB三个分量分别按照一定比例进行处理的结果,其怀旧公式如(2)所示。

    在这里插入图片描述

    Python实现代码主要通过双层循环遍历图像的各像素点,再结合该公式计算各颜色通道的像素值,最终生成如图所示的效果,其完整代码如下。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('nv.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #图像怀旧特效
    for i in range(rows):
        for j in range(cols):
            B = 0.272*img[i,j][2] + 0.534*img[i,j][1] + 0.131*img[i,j][0]
            G = 0.349*img[i,j][2] + 0.686*img[i,j][1] + 0.168*img[i,j][0]
            R = 0.393*img[i,j][2] + 0.769*img[i,j][1] + 0.189*img[i,j][0]
            if B>255:
                B = 255
            if G>255:
                G = 255
            if R>255:
                R = 255
            dst[i,j] = np.uint8((B, G, R))
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    六.图像光照特效

    图像光照特效是指图像存在一个类似于灯光的光晕特效,图像像素值围绕光照中心点呈圆形范围内的增强。如下图所示,该图像的中心点为(192,192),光照特效之后中心圆范围内的像素增强了200。该处理效果最早是作者2013年Android图像处理做的应用,现在改成了Python,哈哈!

    在这里插入图片描述

    Python实现代码主要是通过双层循环遍历图像的各像素点,寻找图像的中心点,再通过计算当前点到光照中心的距离(平面坐标系中两点之间的距离),判断该距离与图像中心圆半径的大小关系,中心圆范围内的图像灰度值增强,范围外的图像灰度值保留,并结合边界范围判断生成最终的光照效果。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import math
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('nv.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #设置中心点
    centerX = rows / 2
    centerY = cols / 2
    print(centerX, centerY)
    radius = min(centerX, centerY)
    print(radius)
    
    #设置光照强度
    strength = 200
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #图像光照特效
    for i in range(rows):
        for j in range(cols):
            #计算当前点到光照中心的距离(平面坐标系中两点之间的距离)
            distance = math.pow((centerY-j), 2) + math.pow((centerX-i), 2)
            #获取原始图像
            B =  img[i,j][0]
            G =  img[i,j][1]
            R = img[i,j][2]
            if (distance < radius * radius):
                #按照距离大小计算增强的光照值
                result = (int)(strength*( 1.0 - math.sqrt(distance) / radius ))
                B = img[i,j][0] + result
                G = img[i,j][1] + result
                R = img[i,j][2] + result
                #判断边界 防止越界
                B = min(255, max(0, B))
                G = min(255, max(0, G))
                R = min(255, max(0, R))
                dst[i,j] = np.uint8((B, G, R))
            else:
                dst[i,j] = np.uint8((B, G, R))
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    七.图像流年特效

    流年是用来形容如水般流逝的光阴或年华,图像处理中特指将原图像转换为具有时代感或岁月沉淀的特效,其效果如下图所示。

    在这里插入图片描述

    Python实现代码详见如下,它将原始图像的蓝色(B)通道的像素值开根号,再乘以一个权重参数,产生最终的流年效果。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import math
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('nv.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #图像流年特效
    for i in range(rows):
        for j in range(cols):
            #B通道的数值开平方乘以参数12
            B = math.sqrt(img[i,j][0]) * 12
            G =  img[i,j][1]
            R =  img[i,j][2]
            if B>255:
                B = 255
            dst[i,j] = np.uint8((B, G, R))
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    八.图像水波特效

    图像水波特效是将图像转换为波浪的效果,围绕水波中心点进行波纹涟漪传递,如图所示。该效果有点丑,读者可以设置透明度进一步优化,可能效果会好看些。

    在这里插入图片描述

    Python实现代码如下所示,它通过计算水波中心位置,然后调用np.sin()函数计算水波传递函数,最终形成水波特效。该小节的代码是依次计算图像所有像素点并进行相关运算,具有一定难度,希望读者能实现对应的效果。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import math
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('scenery.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #定义水波特效参数
    wavelength = 20
    amplitude = 30
    phase = math.pi / 4
    
    #获取中心点
    centreX = 0.5
    centreY = 0.5
    radius = min(rows, cols) / 2
    
    #设置水波覆盖面积
    icentreX = cols*centreX
    icentreY = rows*centreY
        
    #图像水波特效
    for i in range(rows):
        for j in range(cols):
            dx = j - icentreX
            dy = i - icentreY
            distance = dx*dx + dy*dy
            
            if distance>radius*radius:
                x = j
                y = i
            else:
                #计算水波区域
                distance = math.sqrt(distance)
                amount = amplitude * math.sin(distance / wavelength * 2*math.pi - phase)
                amount = amount *  (radius-distance) / radius
                amount = amount * wavelength / (distance+0.0001)
                x = j + dx * amount
                y = i + dy * amount
    
            #边界判断
            if x<0:
                x = 0
            if x>=cols-1:
                x = cols - 2
            if y<0:
                y = 0
            if y>=rows-1:
                y = rows - 2
    
            p = x - int(x)
            q = y - int(y)
            
            #图像水波赋值
            dst[i, j, :] = (1-p)*(1-q)*img[int(y),int(x),:] + p*(1-q)*img[int(y),int(x),:]
            + (1-p)*q*img[int(y),int(x),:] + p*q*img[int(y),int(x),:]
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    九.图像卡通特效

    图像卡通特效是将原始图像转换为具有卡通特色的效果图,本小节的算法主要包括以下几个步骤:

    • 调用cv2.bilateralFilter()函数对原始图像进行双边滤波处理。该滤波器可以在保证边界清晰的情况下有效的去掉噪声,将像素值缩短为每7个灰度级为一个值。它同时使用了空间高斯权重和灰度相似性高斯权重,确保边界不会被模糊掉。
    • 调用cv2.cvtColor()函数将原始图像转换为灰度图像,并进行中值滤波处理,接着调用cv2.adaptiveThreshold()函数进行自适应阈值化处理,并提取图像的边缘轮廓,将图像转换回彩色图像。此时显示的效果如图所示。

    在这里插入图片描述

    • 最后调用cv2.bitwise_and()函数将第1步和第2步产生的图像进行与运算,产生最终的卡通图像,如图所示。

    在这里插入图片描述

    Python实现代码如下所示。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('nv.png')
    
    #定义双边滤波的数目
    num_bilateral = 7
    
    #用高斯金字塔降低取样
    img_color = img
    
    #双边滤波处理
    for i in range(num_bilateral):
        img_color = cv2.bilateralFilter(img_color, d=9, sigmaColor=9, sigmaSpace=7)
    
    #灰度图像转换
    img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    
    #中值滤波处理
    img_blur = cv2.medianBlur(img_gray, 7)
    
    #边缘检测及自适应阈值化处理
    img_edge = cv2.adaptiveThreshold(img_blur, 255,
                                     cv2.ADAPTIVE_THRESH_MEAN_C,
                                     cv2.THRESH_BINARY,
                                     blockSize=9,
                                     C=2)
    
    #转换回彩色图像
    img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)
    
    #与运算
    img_cartoon = cv2.bitwise_and(img_color, img_edge)
    
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', img_cartoon)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    感觉这些算法都实现了,是一个不错的表白神奇啊!

    在这里插入图片描述


    十.图像滤镜特效

    滤镜主要是用来实现图像的各种特殊效果,它在Photoshop中具有非常神奇的作用。滤镜通常需要同通道、图层等联合使用,才能取得最佳艺术效果。本小节将讲述一种基于颜色查找表(Look up Table)的滤镜处理方法,它通过将每一个原始颜色进行转换之后得到新的颜色。比如,原始图像的某像素点为红色(R-255, G-0, B-0),进行转换之后变为绿色(R-0, G-255, B-0),之后所有是红色的地方都会被自动转换为绿色,而颜色查找表就是将所有的颜色进行一次(矩阵)转换,很多的滤镜功能就是提供了这么一个转换的矩阵,在原始色彩的基础上进行颜色的转换。

    假设现在存在一张新的滤镜颜色查找表,如下图所示,它是一张512×512大小,包含各像素颜色分布的图像。该图片建议大家去我github下载。

    在这里插入图片描述

    滤镜特效实现的Python代码如下所示,它通过自定义getBRG()函数获取颜色查找表中映射的滤镜颜色,再依次循环替换各颜色。

    在这里插入图片描述

    完整代码如下:

    #coding:utf-8
    import cv2
    import math
    import numpy as np
    
    #获取滤镜颜色
    def getBGR(img, table, i, j):
        #获取图像颜色
        b, g, r = img[i][j]
        #计算标准颜色表中颜色的位置坐标
        x = int(g/4 + int(b/32) * 64)
        y = int(r/4 + int((b%32) / 4) * 64)
        #返回滤镜颜色表中对应的颜色
        return lj_map[x][y]
    
    #读取原始图像
    img = cv2.imread('scenery.png')
    lj_map = cv2.imread('table.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #循环设置滤镜颜色
    for i in range(rows):
        for j in range(cols):
            dst[i][j] = getBGR(img, lj_map, i, j)
            
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    滤镜特效的运行结果如图所示,其中左边“src”为原始女神图像,右边“dst”为滤镜处理后的图像,其颜色变得更为鲜艳,对比度更强。

    在这里插入图片描述


    十一.图像直方图均衡化特效

    图像直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法,其目的是使输入图像转换为在每一灰度级上都有相同的像素点(即输出的直方图是平的),它可以产生一幅灰度级分布概率均衡的图像,它是增强图像的有效手段之一。

    本部分主要是对彩色图像的直方图均衡化特效处理,它将彩色图像用split()函数拆分成BGR三个通道,然后调用equalizeHist()函数分别进行均衡化处理,最后使用merge()方法将均衡化之后的三个通道进行合并,生成最终的效果图。实现代码如下所示。

    #coding:utf-8
    #By:Eastmount CSDN 2020-12-22
    import cv2
    import numpy as np
    
    #读取原始图像
    img = cv2.imread('scenery.png')
    
    #获取图像行和列
    rows, cols = img.shape[:2]
    
    #新建目标图像
    dst = np.zeros((rows, cols, 3), dtype="uint8")
    
    #提取三个颜色通道
    (b, g, r) = cv2.split(img)
    
    #彩色图像均衡化
    bH = cv2.equalizeHist(b)
    gH = cv2.equalizeHist(g)
    rH = cv2.equalizeHist(r)
    
    #合并通道
    dst = cv2.merge((bH, gH, rH))
    
    #显示图像
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    最终生成如图所示的图像。

    在这里插入图片描述

    在这里插入图片描述


    十二.图像模糊特效

    图像模糊特效可以通过第10章讲述的图像平滑方法实现,包括均值滤波、方框滤波、高斯滤波、中值滤波和双边滤波等,它能消除图像消除图像的噪声并保留图像的边缘轮廓。本小节主要采用高斯滤波进行模糊操作。

    图像高斯滤波为图像不同位置的像素值赋予了不同的权重,距离越近的点权重越大,距离越远的点权重越小。下面是常用的3×3和5×5内核的高斯滤波模板。

    在这里插入图片描述

    在这里插入图片描述

    Python中OpenCV主要调用GaussianBlur()函数实现高斯平滑处理,下面代码是使用11×11核模板进行高斯滤波处理。

    # -*- coding: utf-8 -*-
    #By:Eastmount CSDN 2020-12-22
    import cv2  
    import numpy as np  
    import matplotlib.pyplot as plt
     
    #读取图片
    img = cv2.imread('scenery.png')
    source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
     
    #高斯滤波
    result = cv2.GaussianBlur(source, (11,11), 0)
    
    #用来正常显示中文标签
    plt.rcParams['font.sans-serif']=['SimHei']
    
    #显示图形
    titles = [u'原始图像', u'高斯滤波']  
    images = [source, result]  
    for i in range(2):  
       plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray')  
       plt.title(titles[i])  
       plt.xticks([]),plt.yticks([])  
    plt.show()  
    

    输出结果如图所示,左边为风景原始图像,右边为高斯滤波处理后的图像,它有效地将图像进行了模糊处理。

    在这里插入图片描述


    十三.本章小结

    图像特效处理效果还非常多,作者这里简单总结12种算法,一方面是感谢读者对“Python图像处理及识别”专栏的喜欢;另一方面圣诞节和元旦节快到了,这些代码送给大家拿去表白或感恩自己吧!

    本文主要讲解了图像常见的特效处理,从处理效果图、算法原理、代码实现三个步骤进行详细讲解,涉及图像毛玻璃特效、浮雕特效、油漆特效、素描特效、怀旧特效、光照特效、流年特效、水波特效、卡通特效、图像滤镜、直方图均衡化、模糊特效等,这些知识点将为读者从事Python图像处理相关项目实践或科学研究提供一定基础。

    时光嘀嗒嘀嗒的流失,这是我在CSDN写下的第八篇年终总结,比以往时候来的更早一些。《敏而多思,宁静致远》,仅以此篇纪念这风雨兼程的一年,这感恩的一年。列车上只写了一半,这两天完成,思远,思君O(∩_∩)O

    在这里插入图片描述

    2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

    在这里插入图片描述


    参考文献,在此感谢这些大佬,共勉!

    • [1]Eastmount. [Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果[EB/OL]. (2014-11-02). https://blog.csdn.net/Eastmount/article/details/40711317.
    • [2]有苦向瓜诉说. 用Python来画浮雕画[EB/OL]. (2018.11.29). https://www.jianshu.com/p/00552d2ad0d4.
    • [3]幻艺视界. 纯Python综合图像处理小工具(3)10种滤镜算法[EB/OL]. (2015-05-29). https://www.cnblogs.com/sopic/p/4538052.html.
    • [4]Antonio.D. OpenCV实现“素描”图像[EB/OL]. (2019-01-13). https://blog.csdn.net/weixin_43305468/article/details/86440200.
    • [5]weixin_39059031. 使用python和opencv将图片转化为素描图-python代码解析[EB/OL]. (2018-09-16). https://blog.csdn.net/weixin_39059031/article/details/82724951.
    • [6]Matrix_11. Opencv— — water wave[EB/OL]. (2016-02-24). https://chenjunkai.blog.csdn.net/article/details/47059451.
    • [7]TingHW. python opencv 卡通化图片[EB/OL]. (2018-11-29). https://blog.csdn.net/TingHW/article/details/84613003.
    • [8]百度百科. 滤镜[EB/OL]. (2018-10-01). https://baike.baidu.com/item/滤镜/354809.
    • [9]謝灰灰在找胡蘿蔔. IOS开发--使用lookup table为图片添加滤镜[EB/OL]. (2015-07-12). https://www.jianshu.com/p/b470a5b5a560.
    • [10]Eastmount. [数字图像处理] 五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解[EB/OL]. (2016-06-02). https://blog.csdn.net/eastmount/article/details/46312145.
    展开全文
  • 零基础小白快速打造图像识别模型

    千次阅读 2018-05-27 23:30:01
    深度学习基础,基于百度 EasyDL 快速实现图像识别模型的搭建、训练和调用,帮助初学者了解深度学习基本原理、帮助需要图像分类&amp;图像内容检测但无相关技术人员的企业快速定制模型,并上线服务。 本Chat主要...

    本 Chat 详解无需任何编程&深度学习基础,基于百度 EasyDL 快速实现图像识别模型的搭建、训练和调用,帮助初学者了解深度学习基本原理、帮助需要图像分类&图像内容检测但无相关技术人员的企业快速定制模型,并上线服务。

    本Chat主要内容:

    1. 图像分类和图像检测的区别;
    2. 利用 EasyDL 实现手写数字分类;
    3. 利用 EasyDL 实现汉堡薯条识别;
    4. 上线服务,调用服务 API 实现网页 Demo。

    后续(有时间可能)会推出 Keras、TensorLayer、TensorFlow 和 Paddlepaddle 的零基础教程,敬请关注。

    阅读全文: http://gitbook.cn/gitchat/activity/5b0984fec1aca7201928c7ed

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 我们解析此篇论文,了解其中原理,一来看看如何将图卷积应用于目前技术上,二来看到底如何快速的把准确率刷到state of the art以便发文章。 代码地址:https://github.com/chenzhaomin123/ML_GCN 论文地址 ...

    背景:GCN刚出来,很多很容易想到的idea会被运用起来,很容易产生一些paper。我们解析此篇论文,了解其中原理,一来看看如何将图卷积应用于目前技术上,二来看到底如何快速的把准确率刷到state of the art以便发文章。

    代码地址https://github.com/chenzhaomin123/ML_GCN

    论文地址  https://arxiv.org/abs/1904.03582

    相关论文详解:

    GCN (Graph Convolutional Network) 图卷积网络概览

    图注意力网络(GAT) ICLR2018, Graph Attention Network论文详解

    旷视CVPR2019图卷积多标签图像识别Multi-Label Image Recognition with Graph Convolutional Networks论文详解

    无监督图嵌入Unsupervised graph embedding|基于对抗的图对齐adversarial graph alignment详解

    Graph特征提取方法:谱聚类(Spectral Clustering)详解

    目录

    一、概览

    1.1 任务描述

    1.2 方法

    1.3 效果

    二、背景及相关工作

    2.1 多标签识别

    2.2 相关工作

    2.3 本文方法

    2.4 贡献点

    三、方法

    3.1 motivation

    3.2 Graph Convolution Network简化的表示

    3.3 多标签GCN

    结构概览

    图像特征提取

    基于GCN的分类器

    前馈预测

    loss

    3.4 ML-GCN的互相关矩阵

    标签互相关矩阵

    条件概率矩阵

    缺陷与改进

    欠拟合问题

    四、实验

    五、结论及个人总结


    一、概览

    为了构建图像中同时出现的不同目标标签的依赖关系模型,来提高模型的识别性能,在这篇论文中提出了一种基于图卷积网络模型——ML-GCN(Multi-Label Graph Convolution Networks)。

    1.1 任务描述

    多标签的图像识别任务,旨在预测图像中所有存在的一系列目标标签。

    由于图像中的目标通常是同时出现的,因此理想状态下,我们希望对不同目标标签的依赖性进行建模以便提高模型的识别性能。

    1.2 方法

    为了捕获和利用这种重要的依赖关系,本文提出了一种基于图卷积网络的模型 (GCN)。

    • 该模型能够在目标标签之间构建有向图,其中每个节点 (标签) 由词向量 (word embedding) 表示,
    • 关于词向量word embedding,属于NLP的内容 https://baike.baidu.com/item/%E8%AF%8D%E5%90%91%E9%87%8F/22719921?fr=aladdin
    • 而 GCN 网络用于将该标签图映射到一组相互依赖的目标分类器。
    • 这些分类器使用另一个子网络提取的图像描述器,实现整个网络的端到端训练。
    • 通过设计不同类型的相关矩阵并将它们集成到图卷积网络中训练,来深入研究图构建问题。

    1.3 效果

    目前最优:通过在两个多标签图像识别数据集基准的试验评估,结果表明所提出的方法明显优于当前最先进的方法。

    语义信息:可视化分析结果表明图卷积网络模型所学习的分类器能够保持有意义的语义结构信息。

    二、背景及相关工作

    2.1 多标签识别

    多标签识别是CV领域的一个基础的子问题,有很多重要的应用。对于多标签识别问题一个重要的方面是要识别出标签之间的依赖性,即dependecies。

    例如一个如下面的图结构之中,A标签出现,则B标签很有可能出现,但是反之不是这样,就是B标签出现,A标签并不一定出现。

    2.2 相关工作

    作者介绍了其他人的一些方法

    • 每个标签当做一个二值的分类问题
    • 通过RNN建立相应的概率模型
    • 引入注意力机制来获得local correlations、global correlations

    2.3 本文方法

    提出了一个新的网络:aka ML-GCN,which properties with scalability and flexibility impossible for competing approaches. Instead of treating object classifiers as a set of independent parameter vectors to be learned, we propose to learn inter-dependent object classifiers from prior label representations

    • 对于运算方法而言,更加可定制与灵活
    • 训练时,每个分类器不把多标签分类当做一系列独立的问题去学习参数
    • 提前通过标签来学习,得到标签的之间的representation

    2.4 贡献点

    • 端到端的训练,用GCN刻画标签之间的representation
    • 设计了互相关矩阵,并且设计了re-weighted的方法,避免过拟合与欠拟合
    • 在两个多标签的基准数据集上达到了最好的效果。

    三、方法

    这部分先介绍了motivation,然后重新认识一下GCN,然后详细的介绍我们的ML-GCN

    3.1 motivation

    多标签识别之中有两个重要的问题:

    • 如何更好的识别出标签
    • 如何更好的弄懂标签之间的互相关关系

    本文中,我们运用Graph结构来建立标签之间的关系,特别的,运用word embedding(词向量,这个不懂的话自行百度)的方法来处理每个节点(节点也是label,这个问题里面node等价于label),运用GCN直接的将这些label集成化为相互关联的分类器

    • Firstly, as the embedding-to-classifier mapping parameters are shared across all classes,the learned classifiers can retain the weak semantic structures in the word embedding space, where semantic related concepts are close to each other.集成后的分类器可以从所有的类别之中提取信息,分类器可以从弱语义结构之中获取信息。
    • Secondly, we design a novel label correlation matrix based on their co-occurrence patterns to explicitly model the label  dependencies by GCN, with which the update of node features will absorb information from correlated nodes (labels).设计了一个新的label之间的互相关矩阵,GCN可以从节点的相关节点中提取信息。

    3.2 Graph Convolution Network简化的表示

    我们之前解析过GCN的公式  GCN (Graph Convolutional Network) 图卷积网络概览

    上面那篇详细的给出了GCN的具体公式推导,这里,我们从这篇论文的角度,再次看一下相关的公式,以及用更简化的方法去理解这些公式。

    GCN的目的是在图G上学到一个函数f( · , · )

    • 该图的特征描述为
    • 对应的互相关矩阵
    • n表示节点的个数
    • d表示节点特征的个数
    • 通过上面这些更新节点的新特征

    所以每个GCN可以描述为这样的公式:

    • 运用了卷积操作之后,这个学到的函数 f( · , · ) 表示为:
    • 其中,转移矩阵为,需要通过训练获得(注意这个带上标的W与后面的分类器W不同)
    • 互相关矩阵A归一化后为
    • h( · )表示非线性激活

    这样,我们对GCN的公式进行了更加简化的理解和表示。

    3.3 多标签GCN

    结构概览

    模型有两个部分组成,一个是image representation learning,另一个是GCN based classifier learning

    • image representation learning:图片经过一个CNN,提取出一个特征向量D。
    • GCN based classifier learning:GCN通过对图结构的学习,word-embeddings学到,这个就是网络的输入,C为类别的个数,d为word-embedding vector的纬度,直接的图会被建立于这些label之上。i.e.

    图像特征提取

    也就是image representation learning,我们运用ResNet101,,输入图像I为 448*448大小,conv5_x的输出为2048*14*14大小的featuremap,然后进行global pooling来得到图像层面的feature x

    其中,θcnn表示网络参数,D纬度为2048.即通过卷积网络,我们将图像的特征提取为一个2048纬度的向量。

    基于GCN的分类器

    前馈预测

    我们通过GCN学到各个类别之间的关联性,,C表示类别的个数。

    运用结构为stacked GCN,layer l takes the node representations from previous layer (Hl) as inputs and outputs new node representations。第l层的节点是前面一层作为输入,并且输出为新节点。(这里我们理解的不透彻)

    例如第一层的输入为,其中d代表label-level word embedding的纬度。最后一层输出为,D代表图像特征向量的纬度。

    通过将learned classifiers应用于image representations,最终的预测为:

    x就是前面通过CNN提取出的特征向量,纬度2048。

    loss

    假定ground truth label为,1表示label i 有,0表示label i 没有。一共有C类个标签。网络的loss如下:

    其中σ(*)表示sigmoid函数。

    3.4 ML-GCN的互相关矩阵

    对于GCN而言,如何构建节点之间的互相管矩阵A至关重要。很多情况下,互相关矩阵是预先定义好的。这里,我们通过最小化labels的co-occurrence patterns来构建互相关矩阵。

    我们通过条件概型来定义label correlation dependency,例如P( Lj | Li ),表示Li出现的情况下,Lj 出现的概率。同理,P( Li | Lj)表示Lj出现的情况下,Li出现的概率,这两个条件概率的意义不同,所以P( Lj | Li ) 与 P( Li | Lj)是未必相等的。互相关矩阵是非对称的。

    标签互相关矩阵

    为了构建这样一个互相关矩阵,我们会列出所有的标签对,即一个标签与另一个标签之间的对应关系。

    C为类别的个数,也就是标签的个数

    条件概率矩阵

    元素Mij表示Li与Lj同时出现的情况,通过co-occurrence matrix我们就可以得到了条件概率矩阵:

    ,表示i出现的情况下,每一类j出现的概率。Pi有j维,Mi也有j维。

    注意这里,Pi与Mi为粗体,表示一个向量,例如Mi表示M中与i对应的所有的Mij,Ni是一个数,表示Li在训练集中出现的概率。

    Pi中的元素,表示Li出现的情况下Lj出现的概率。

    缺陷与改进

    如果运用这样的条件概率矩阵的话,有一些缺点:

    • the co-occurrence patterns between a label and the other labels may exhibit a long-tail distribution, where some rare co-occurrences may be noise。因为并发性,两个标签之间可能有long-tail distribution,导致噪声可能过大。这个long-tail distribution我们不太明白什么意思。后面再来研究。简单而言就是受到噪声影响过大。
    • the absolute number of co-occurrences from training and test may not be completely consistent. A correlation matrix overfitted to the training set can hurt the generalization capacity.训练集与测试集之间的相关性未必相同,所以根据训练集获得的互相关矩阵可能过拟合。

    因此,我们将此互相关矩阵二值化为P,用τ表示噪声边界:

    A为二值化后的互相关矩阵

    欠拟合问题

    通过上面3.2我们所讲的GCN的公式,,一个节点的feature是它自身的feature与相邻节点的feature的加权和。那么只用0和1当做二值矩阵有一个缺点就是over-smoothing,(上一节,之所以采用二值化,论文说因为怕过拟合,结果这里运用了二值化之后,这里又怕欠拟合,挺矛盾的)。

    所以对重新定义互相关矩阵:

    • A'是re-weighted correlation matrix
    • p 表示节点自身和与其他节点之间的weights
    • 含义,p->1 时,节点自身的特征更容易被忽视
    • p->0时,相邻节点的特征更容易被忽视

    四、实验

    前面这些原理看懂了已经基本可以看懂相应的代码,并且运行模型了。

    实验部分也相对是重点,因为实验间接的体现了作者如何将模型调参到state of the art的效果的。我们后续对此进行认真研究然后汇总,再来更新。

    五、结论及个人总结

    idea并不新,只是将CNN与GCN结合起来,A+B就能发论文。

    唯一实质性的创新点是,提出了互相关矩阵的运算方法。

    另外,我们需要搞懂作者如何将模型做到state of the art的。对于我们的模型实现很有帮助。

    相关论文详解:

    GCN (Graph Convolutional Network) 图卷积网络概览

    图注意力网络(GAT) ICLR2018, Graph Attention Network论文详解

    旷视CVPR2019图卷积多标签图像识别Multi-Label Image Recognition with Graph Convolutional Networks论文详解

    无监督图嵌入Unsupervised graph embedding|基于对抗的图对齐adversarial graph alignment详解

    Graph特征提取方法:谱聚类(Spectral Clustering)详解

    展开全文
  • 注意力机制基本原理详解及应用

    千次阅读 2020-08-10 14:41:03
    所以,了解注意力机制的工作原理对于关注深度学习技术发展的技术人员来说有很大的必要。 1. 人类的视觉注意力 从注意力模型的命名方式看,很明显其借鉴了人类的注意力机制,因此,我们首先简单介绍人类视觉的选择...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • 9.2.1 vmd技术原理介绍 259 9.2.2 vmd技术的缺陷 259 9.3 vca技术介绍 260 9.3.1 vca技术的原理 260 9.3.2 vca技术的突破 260 9.3.3 vca的关键技术 262 9.4 视频分析工作机制 263 9.4.1 视频分析软件...
  • 9.2.1 vmd技术原理介绍 259 9.2.2 vmd技术的缺陷 259 9.3 vca技术介绍 260 9.3.1 vca技术的原理 260 9.3.2 vca技术的突破 260 9.3.3 vca的关键技术 262 9.4 视频分析工作机制 263 9.4.1 视频分析软件...
  • 9.2.1 vmd技术原理介绍 259 9.2.2 vmd技术的缺陷 259 9.3 vca技术介绍 260 9.3.1 vca技术的原理 260 9.3.2 vca技术的突破 260 9.3.3 vca的关键技术 262 9.4 视频分析工作机制 263 9.4.1 视频分析软件框架 263...
  • 人脸识别

    2020-10-29 16:12:31
    参考文章: 2D与3D人脸识别详解,综述,思路清晰 ...图像算法之3D人脸识别技术原理概述,有一些文章推荐,可参考一点 https://blog.csdn.net/hahabeibei123456789/article/details/98036011 3D人脸重建算法汇总 ...
  • 基于matlab的蓝色车牌识别(绪论)

    千次阅读 多人点赞 2019-07-17 21:09:39
    一车牌识别系统的工作原理详解 二 实现的内容 三 实现的依据 转载请注明出处,谢谢! 绪论 光阴荏苒,岁月如歌,三年的读研时间已过去了两年,马上就要面临找工作,是时候写点技术博客备着了。 为了能够找到一...
  • 11 深度学习顶级算法详解11 Prisma图像风格变换原理 论文Convolutional Pose Machines算法梯度消失问题以及关键点协同定位方法分析 12 深度学习顶级算法详解12 Style-Transfer实现细节 论文Convolutional Pose ...
  • 本书分为“基础”、“应用”、“提高”三大部分,共7章,内容包括数字图像基础、数字图像变换、数字图像分析、图像特征提取、图像识别技术、实战案例详解和思维技法点拨。本书具有系统全面、循序渐进、内容新颖、...
  • 这个类原来是从《VisualC++数字图像处理技术详解》这本书里拿来的,只包含打开、保存、灰度化功能,后期功能是从网上流传的基于VC开发的数字识别系统移植过去的,虽说是移植,不过也费了不少功夫,然后也加了些自己...
  • 最近两年,注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注与深入了解的核心技术之一。 本文以机器翻译为例,深入浅出地...
  • 目标检测 一.简介 目标检测,也叫目标提取...随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、智能监控...
  • 注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都很容易遇到注意力模型的身影。所以,了解注意力机制的工作原理对于关注深度学习技术发展的...
  • 案例实战:手写数字识别模型(1)手写数字识别原理:(2)手写数字识别的代码实现(3)图像识别原理详解总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • 13.6.2时间格式转换符详解415 13.6.3格式说明符语法图417 13.7正则表达式417 13.7.1正则表达式的作用418 13.7.2正则表达式的基本规则418 13.7.3正则表达式中的一些高级规则421 13.7.4正则表达式中的其他通用...
  • 同时,后续作者会陆续将Python网络爬虫、数据分析、深度学习和图像识别、知识图谱的代码分别共享出来,供大家一起交流学习。且行且珍惜,真的很感谢这来之不易的博士学习机会,加油。 By:Easatmount 杨秀璋 更多内容...
  • 3.4.7 图像识别 89 3.4.8 文字识别 90 3.4.9 卫星定位 91 3.4.10 多媒体播放 95 3.4.11 访问网络 97 3.4.12 博客客户端的实现 99 3.5 调试技术 102 3.5.1 JDWP调试 102 3.5.2 运行dalvik测试程序 103 3.5.3 测试小...
  • android笔记.rar

    2011-03-04 09:15:47
    3.4.7 图像识别... .89 3.4.8 文字识别... .90 3.4.9 卫星定位... .91 3.4.10 多媒体播放... ...95 3.4.11 访问网络... .97 3.4.12 博客客户端的实现... ...99 3.5 调试技术... ...102 3.5.1 JDWP调试 ... ..102 ...
  • android开发揭秘PDF

    2012-02-27 11:59:51
    14.2.1 游戏引擎原理 14.2.2 游戏引擎定位 14.2.3 游戏引擎框架 14.3 游戏引擎设计 14.3.1 游戏引擎结构和功能 设计 14.3.2 游戏引擎设计注意事项 14.4 游戏引擎实现 14.4.1 Activity类实现 14.4.2 流程控制和线程 ...
  • 《Android应用开发揭秘》源码

    千次下载 热门讨论 2012-02-24 23:18:30
     14.2.1 游戏引擎原理  14.2.2 游戏引擎定位  14.2.3 游戏引擎框架  14.3 游戏引擎设计  14.3.1 游戏引擎结构和功能设计  14.3.2 游戏引擎设计注意事项  14.4 游戏引擎实现  14.4.1 Activity类实现  14.4.2...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

图像识别技术原理详解