精华内容
下载资源
问答
  • 下列用以显示一系列图像的是
    千次阅读
    2021-07-14 01:08:38

    1, 下列设备中属于输出设备的是 A.键盘 B.鼠标 C.显示器 D.扫描仪

    t0158b4a6abe74a340e.png.jpg

    应该选择C:显示器。显示器(Display)又称监视器,是实现人机对话的主要工具,它既可以显示键盘输入的命令或数据,也可以显示计算机数据处理的结果。常用的显示器主要有两种类型。一种是CRT(Cath-odeRayTube,阴极射线管)显示器,用於一般的台式微机;另一种是液晶(LiquidCrystalDisplay,简称LCD)显示器,用於便携式微机,下面主要介绍CRT显示器,按颜色区分,可以分为单色(黑白)显示器和彩色显示器。彩色显示器又称图形显示器,它有两种基本工作方式:字符方式和图形方式,在字符方式下,显示内容以标准字符为单位,字符的字形由点阵构成,字符点阵存放在字形发生器中。在图形方式下,显示内容以像素为单位,屏幕上的每个点(像素)均可由程序控制其亮度和颜色,因此能显示出较高质量的图形或图像。显示器的分辨率分为高中低三种,分辨率的指标是用屏幕上每行的像素数与每帧(每个屏幕画面)行数的乘积表示的。乘积越大,也就是像素点越小,数量越多,分辨率就越高,图形就越清晰美观。输出设备(Output Device)是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。输出设备由显示器、打印机和绘图机三种组成。输出设备种类也很多.计算机常用的输出设备有各种打印机、凿孔输出设备、显示设备和绘图机等。打印机和显示设备已成为每台计算机和大多数终端所必需的设备。纸带凿孔输出机 计算机用纸带凿孔输出设备。计算机输出信息用凿孔纸带上的小孔表示。这既可将信息长期保存于纸带上,又可利用凿孔纸带再输入计算机。卡片凿孔输出机 计算机用卡片凿孔输出设备。凿孔卡片阅读方便,可长期保存,也可作为计算机的输入。参考资料:百度百科-输出设备

    2, 下列设备不是输入设备的是: A扫描仪 B数码相机 C显示器 D光电阅读...

    t017419225e929599da.png.jpg

    答案是C。A扫描仪:它可以将纸质的或者其它材质的转换为电子文档,信息是从外部流入计算机,因此是输入设备。B数码相机:它也可以将照片导入到计算机,因此也是输入型的设备。C显示器:它是用来将数据显示出来的,信息是从计算机输送到人,因此,属于输出设备。D光电阅读器:常见的答题卡就是需要光电阅读器读取的,将答题卡上的信息转换为电子信息后再输入到计算机,因此是输入设备。

    相关概念

    计算机

    电子计算机(electronic computer),通称电脑,简称计算机(computer),是现代的一种利用电子技术和相关原理根据一系列指令来对数据进行处理的机器。电脑可以分为两部分:软件系统和硬件系统。第一台电脑是1946年2月15日在美国宾夕法尼亚大学诞生的ENIAC通用电子计算机。计算机所相关的技术研究叫计算机科学,以数据为核心的研究称为信息技术。人们把没有安装任何软件的计算机称为裸机。随着科技的发展,现在新出现一些新型计算机有:生物计算机、光子计算机、量子计算机等。

    答题卡

    答题卡(又称信息卡),是光标阅读机输入信息的载体,是配套光标阅读机的各种信息录入表格的总称。信息卡将用户需要的信息转化为可选择的选项,供用户涂写。OMR设备根据信息点的涂与未涂和格式文件设置将信息还原。 信息卡的式样,是根据输入计算机的信息并按照光标阅读机的设计规范所要求的格式而设计的。

    更多相关内容
  • · 本系列使用的开发环境是jupyter notebook,是个python的交互式开发环境,测试十分方便,并集成了vim操作,安装教程可参考:windows上jupyter notebook主题背景、字体及扩展插件配置(集成vim环境) 在【数.....

    · 本系列python版本:python3.5.4

    · 本系列opencv-python版本:opencv-python3.4.2.17

    · 本系列使用的开发环境是jupyter notebook,是一个python的交互式开发环境,测试十分方便,并集成了vim操作,安装教程可参考:windows上jupyter notebook主题背景、字体及扩展插件配置(集成vim环境)

    前言:原创不易,转载请告知并注明出处!扫码关注公众号【机器学习与自然语言处理】,定期发布知识图谱,自然语言处理、机器学习等知识,添加微信号【17865190919】进讨论群,加好友时备注来自CSDN。
    在这里插入图片描述


    【数字图像处理系列三】图像增强:线性、 分段线性、 对数、 反对数、 幂律(伽马)变换、直方图均衡 一文中我们从图像灰度变换的角度阐述了图像增强的各种方式,本文我们将一起学习图像处理中重点的方式:图像滤波,图像滤波分为空间域滤波和频率域滤波,频率域滤波我们将在下一节重点说明。图像空间滤波对于图像处理主要体现在两个方面:

    1. 平滑图像,达到降低图像噪音的效果(平滑空间滤波)
    2. 锐化图像,主要目的是突出灰度的过渡部分,即突出图像的边缘(锐化空间滤波)

    先上图,感受一下空间滤波对图像处理的效果(原图、经过拉普拉斯处理后的图像):
    在这里插入图片描述
    在这里插入图片描述




    一、空间滤波原理


    图像的空间滤波器有两大部分:

    1. 一个基于图像像素的矩形邻域
    2. 对矩形邻域包围的图像像素的操作方式

    理解图像的矩形邻域如下图所示

    将图像的左上角看做是空间域中的原点O,向下取为x轴,向右取为y轴,图中便显示了中心点(x,y)的一个3*3邻域。 每经过一个滤波产生一个新像素,新像素的坐标等于领域中心坐标(x,y),新像素的值是滤波操作的结果。而滤波器的类型也取决于邻域上操作的类型,如果邻域操作是线性操作,则滤波器称为线性空间滤波器;反之如果邻域操作是非线性操作,则滤波器称为非线性空间滤波器。

    这里我们假设 f(x,y) 为原像素值,g(x,y) 为滤波后的像素值,则对于一个大小为M * N的图像使用大小为m * n的滤波器进行线性空间滤波,若令m=2a+1,n=2b+1,则邻域上线性操作可统一表达成下式:

    其中x,y是可变的,以便w中的每个像素可访问f中的每个像素,我们一般称邻域内像素和滤波器模板的操作叫做卷积。下面将分别讲解平滑空间滤波器和锐化空间滤波器





    二、平滑空间滤波器


    1、均值滤波、加权均值滤波

    均值滤波又称为线性空间滤波,利用邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,尤其是会模糊图像边缘。通过下图便可看到均值滤波和加权均值滤波的区别:

    其中左图是均值滤波,即邻域中每个像素权重相同,取邻域平均值作为中心像素点的滤波输出值,则滤波器模板计算公式为:

    而右图滤波器模板则赋予中心点最高权重,然后随着距中心点距离的增加而减小系数值,其目的是在平滑处理中试图降低模糊,加权均值滤波器的操作如下是:


    下面分别通过opencv-python提供的均值滤波和自定义均值滤波器两种方式实现图像的均值滤波:

    import cv2
    import copy
    import random
    import imutils
    import numpy as np
    
    img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/lena.png')
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #利用opencv提供函数实现均值滤波
    blur_img = cv2.blur(gray_img, (3, 3))
    
    #在灰度图上手动实现均值滤波器
    gray_avg_img = copy.deepcopy(gray_img)
    for i in range(1, gray_img.shape[0]-1):
        for j in range(1, gray_img.shape[1]-1):
            sum_pix = sum([gray_img[l, k] for l in range(i-1, i+2) for k in range(j-1, j+2)])
            gray_avg_img [i, j] = int(sum_pix/9)
    
    #在RGB彩色图上手动实现均值滤波器
    rgb_avg_img = copy.deepcopy(img)
    for i in range(1, img.shape[0]-1):
        for j in range(1, img.shape[1]-1):
            sum_b_pix = sum([img[l, k, 0] for l in range(i-1, i+2) for k in range(j-1, j+2)])
            sum_g_pix = sum([img[l, k, 1] for l in range(i-1, i+2) for k in range(j-1, j+2)])
            sum_r_pix = sum([img[l, k, 2] for l in range(i-1, i+2) for k in range(j-1, j+2)])
            rgb_avg_img [i, j] = [int(sum_b_pix/9), int(sum_g_pix/9), int(sum_r_pix/9)]
    
    cv2.imshow('origin image', imutils.resize(img, 500))
    cv2.imshow('gray image', imutils.resize(gray_img, 500))
    cv2.imshow('blur image', imutils.resize(blur_img, 500))
    cv2.imshow('gray average image', imutils.resize(gray_avg_img , 500))
    cv2.imshow('rgb average  image', imutils.resize(rgb_avg_img , 500))
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    


    效果图如下:依次是原图、灰度图、基于灰度图opencv提供函数blur均值滤波效果、基于灰度图自定义均值滤波效果、基于彩色图自定义均值滤波效果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述




    2、中值滤波

    中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值。中值滤波在对于椒盐噪音处理上效果很好



    下面分别通过opencv-python提供的中值滤波和自定义中值滤波器两种方式实现图像的中值滤波,下面实验中我们尝试着对图像添加椒盐噪音然后进行使用中值滤波进行消除:

    import cv2
    import copy
    import random
    import imutils
    import numpy as np
    
    img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/old.jpg')
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    #给灰度图像自动添加椒盐噪音
    pepper_img = copy.deepcopy(gray_img)
    for i in range(gray_img.shape[0]):
        for j in range(gray_img.shape[1]):
            if random.randint(0, 20) == 0:
                pix = random.randint(250, 255)
                pepper_img[i, j] = pix
    
    #opencv提供cv2.medianBlur()函数实现中值滤波
    blur_img = cv2.medianBlur(pepper_img, 5)
    
    #自实现中值滤波器
    temp_arr = np.zeros((9))
    median_img = copy.deepcopy(pepper_img)
    for i in range(1, pepper_img.shape[0]-1):
        for j in range(1, pepper_img.shape[1]-1):
            temp_arr[0] = pepper_img[i-1, j-1]
            temp_arr[1] = pepper_img[i-1, j]
            temp_arr[2] = pepper_img[i-1, j+1]
            temp_arr[3] = pepper_img[i, j-1]
            temp_arr[4] = pepper_img[i, j]
            temp_arr[5] = pepper_img[i, j+1]
            temp_arr[6] = pepper_img[i+1, j-1]
            temp_arr[7] = pepper_img[i+1, j]
            temp_arr[8] = pepper_img[i+1, j+1]
            arr = np.sort(temp_arr)
            median_img[i, j] = arr[4]
    
    cv2.imshow('pepper image', imutils.resize(pepper_img, 600))
    cv2.imshow('blur image', imutils.resize(blur_img, 600))
    cv2.imshow('median image', imutils.resize(median_img, 600))
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    


    效果图如下:依次是含椒盐噪音图、经过cv2.medianBlur()函数处理后的图像、经过自定义中值滤波器滤波后图像

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述



    除了中值滤波外,还有一种非线性滤波是最值滤波,最值滤波是去邻域中的最大值最为新像素值,在搜寻一幅图像最亮点时非常有用。





    三、锐化空间滤波器


    写在前面上节提到的图像平滑是通过模糊图像达到图像降噪的目的,但同时存在一个问题就是会使得图像的边缘被淡化。因此本节图像锐化滤波恰相反,图像平滑是一个积分的过程,图像锐化便是通过图像微分增强边缘和其他突变,削弱灰度变换缓慢的区域。

    在图像微分锐化操作中,对于一阶微分的任何定义需要保证以下三点:

    1. 在恒定灰度区域的微分值为零
    2. 在灰度台阶或斜坡处微分值非零
    3. 沿着斜坡的微分值非零

    同样类比得对于二阶微分的任何保证以下三点:

    1. 在恒定区域微分值为零
    2. 在灰度台阶或斜坡的起点处微分值非零
    3. 沿着斜坡的微分值非零

    1、二阶微分图像锐化—laplacian算子

    首先一个二维图像函数 f(x,y) 的拉普拉斯算子定义为:

    拉普拉斯变换是一个线性算子,在x方向上离散化有:

    在y方向离散化有:

    从上面三个式子可以得出离散拉普拉斯算子是:

    上面公式便是拉普拉斯算子中一种计算方式,等价于下图中的laplacian模板1,自然laplacian模板2也可以类比写出离散算子公式:


    注:由于拉普拉斯是一种微分算子,因此其强调的是图像中灰度的变换,忽视图像灰度变换缓慢的区域。因此我们通过laplacian算子得出的是图像更多的是边缘线,因此,我们可以将原图和拉普拉斯图像叠加在一起,可以复原背景特性并且保持拉普拉斯锐化处理的效果,由此得出下面公式:

    对于上面展示的拉普拉斯模板1和拉普拉斯模板2,常数c取-1,也有其他模板,这里不再详述


    下面给出利用opencv函数和自实现上述拉普拉斯模板的应用实例:

    import cv2
    import copy
    import random
    import imutils
    import numpy as np
    
    img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/blurry_moon.jpg')
    
    #手动实现拉普拉斯滤波,使用上述laplacian模板1
    lap_img1 = copy.deepcopy(img)
    for i in range(1, img.shape[0]-1):
        for j in range(1, img.shape[1]-1):
            temp = img[i+1, j] + img[i-1, j] + img[i, j+1] + img[i, j-1] -4*img[i, j]
            lap_img1[i, j] = img[i, j] - temp
    
    #手动实现拉普拉斯滤波,使用上述laplacian模板2
    lap_img2 = copy.deepcopy(img)
    for i in range(1, img.shape[0]-1):
        for j in range(1, img.shape[1]-1):
            temp = img[i-1, j-1] + img[i-1, j] + img[i-1, j+1] + img[i, j-1] + \
                    img[i, j+1] + img[i+1, j-1] + img[i+1, j] + img[i+1, j+1] - 8*img[i, j]
            lap_img2[i, j] = img[i, j] - temp
    
    #使用opencv自带函数实现,使用上述laplacian模板1
    kernel = np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]) #定义了卷积核,对每一个像素进行操作
    lapkernel_img = cv2.filter2D(img, -1, kernel)
    lap_img3 = img - lapkernel_img
    
    cv2.imshow('origin image', imutils.resize(img, 400))
    cv2.imshow('laplacian image1', imutils.resize(lap_img1, 400))
    cv2.imshow('laplacian image2', imutils.resize(lap_img2, 400))
    cv2.imshow('laplacian image3', imutils.resize(lap_img3, 400))
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    


    效果图如下,顺序既是上述程序的输出顺序:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述




    2、非锐化掩蔽

    非锐化掩蔽的思路便是应原图像减去平滑的图像,这样便得到强调边缘的图像,然后再和原图像相加,便达到强调图像边缘的效果,具体步骤如下:

    1. 模糊原图像
    2. 从原图像减去模糊图像(产生的差值图像称为模板)
    3. 将模板和原图像相加

    则将上述思路换算成数学公式便是:

    然后在原图像加上模板的一个权重部分:

    k>1时我们称该处理为高提升滤波,当k<1时则是不强调非锐化模板的作用

    下面提供代码实现如下:

    import cv2
    import copy
    import random
    import imutils
    import numpy as np
    
    img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/blurry_moon.jpg')
    blur_img = cv2.blur(img, (5, 5))
    
    mask_img = img - blur_img
    sharp_mask_img = img + mask_img
    
    cv2.imshow('origin image', imutils.resize(img, 400))
    cv2.imshow('blur image', imutils.resize(blur_img, 400))
    cv2.imshow('mask image', imutils.resize(mask_img, 400))
    cv2.imshow('sharpen mask image', imutils.resize(sharp_mask_img, 400))
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    



    3、cv2.filter2D()自定义卷积核滤波

    opencv-python中提供cv2.filter2D()函数可实现自定义内核和图像进行卷积操作,cv2.filter2D()一般定义为:

    cv2.filter2D(img, -1, kernel)   #参数三kernel是卷积核; 参数二ddepth输入值为-1时,目标图像和原图像深度保持一致
    

    下面我们提供实例展示对图像滤波的效果:

    import cv2
    import copy
    import random
    import imutils
    import numpy as np
    
    img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/old.jpg')
    kernel = np.array([[0, -1, 0], [0, 5, 0], [0, -1, 0]]) #自定义了卷积核,对每一个像素进行操作
    new_img = cv2.filter2D(img, -1, kernel)
    
    cv2.imshow('origin image', imutils.resize(img, 400))
    cv2.imshow('new image', imutils.resize(new_img, 400))
    if cv2.waitKey(0) == 27:
        cv2.destroyAllWindows()
    

    根据自定义的卷积核 kernel = np.array([[0, -1, 0], [0, 5, 0], [0, -1, 0]]) 得到的滤波效果如下:

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 重拾图形图像处理 ---- 笔试题

    万次阅读 2020-11-30 17:00:38
    2、存储幅大小为1024*1024,256个灰度级的图像,需要8M bit。 3、亮度鉴别实验表明,韦伯比越大,则亮度鉴别能力越差 。 4、直方图均衡化适用于增强直方图呈尖峰 分布的图像。 5、依据图像的保真度,图像压缩可...

    一、填空题(每题1分,共15分)

    1、列举数字图像处理的三个应用领域 医学        、天文学        军事              

    2、存储一幅大小为1024*1024,256个灰度级的图像,需要  8M     bit。

    3、亮度鉴别实验表明,韦伯比越大,则亮度鉴别能力越  差

    4、直方图均衡化适用于增强直方图呈   尖峰   分布的图像。

    5、依据图像的保真度,图像压缩可分为   无损压缩    有损压缩    

    6、图像压缩是建立在图像存在 编码冗余    像素间冗余  心理视觉冗余  三种冗余基础上。

    7、对于彩色图像,通常用以区别颜色的特性是 色调     、 饱和度

        亮度   

    8、对于拉普拉斯算子运算过程中图像出现负值的情况,写出一种标定方法:

                              

    二、选择题(每题2分,共20分)

    1、采用幂次变换进行灰度变换时,当幂次取大于1时,该变换是针对如下哪一类图像进行增强。( B )

    A 图像整体偏暗             B 图像整体偏亮   

    C图像细节淹没在暗背景中   D图像同时存在过亮和过暗背景

    2、图像灰度方差说明了图像哪一个属性。( B   )

    A 平均灰度                 B 图像对比度   

    C 图像整体亮度             D图像细节

    3、计算机显示器主要采用哪一种彩色模型(  A   )

        A、RGB     B、CMY或CMYK    C、HSI      D、HSV

    4、采用模板[-1   1]T主要检测( A  )方向的边缘。

    A.水平     B.45°         C.垂直    D.135°

    5、下列算法中属于图象锐化处理的是:(  C   )

    A.低通滤波   B.加权平均法   C.高通滤波  D. 中值滤波

    6、维纳滤波器通常用于(  C   )

       A、去噪    B、减小图像动态范围     C、复原图像     D、平滑图像

    7、彩色图像增强时,     C       处理可以采用RGB彩色模型。

    A. 直方图均衡化      B. 同态滤波      

    C. 加权均值滤波      D. 中值滤波

    8、__B__滤波器在对图像复原过程中需要计算噪声功率谱和图像功率谱。

    A. 逆滤波      B. 维纳滤波     

    C. 约束最小二乘滤波      D. 同态滤波

    9、高通滤波后的图像通常较暗,为改善这种情况,将高通滤波器的转移函数加上一常数量以便引入一些低频分量。这样的滤波器叫     B        

    A. 巴特沃斯高通滤波器                B. 高频提升滤波器      

    C. 高频加强滤波器                        D. 理想高通滤波器

    10、图象与灰度直方图间的对应关系是  B  __

    A.一一对应     B.多对一       C.一对多       D.都不

     

    三、判断题(每题1分,共10分)

    1、马赫带效应是指图像不同灰度级条带之间在灰度交界处存在的毛边现象。( √  )

    2、高斯低通滤波器在选择小的截止频率时存在振铃效应和模糊现象。(  ×   )

    3、均值平滑滤波器可用于锐化图像边缘。( ×  )

    4、高频加强滤波器可以有效增强图像边缘和灰度平滑区的对比度。( √  )

    5、图像取反操作适用于增强图像主体灰度偏亮的图像。( ×  )

    6、彩色图像增强时采用RGB模型进行直方图均衡化可以在不改变图像颜色的基础上对图像的亮度进行对比度增强。(  ×  )

    7、变换编码常用于有损压缩。(  √  )

    8、同态滤波器可以同时实现动态范围压缩和对比度增强。(  √   )

    9、拉普拉斯算子可用于图像的平滑处理。( × )

    10、当计算机显示器显示的颜色偏蓝时,提高红色和绿色分量可以对颜色进行校正。(   √   )

     

    四、简答题(每题5分,共20分)

    1、逆滤波时,为什么在图像存在噪声时,不能采用全滤波?试采用逆滤波原理说明,并给出正确的处理方法。

    复原由退化函数退化的图像最直接的方法是直接逆滤波。在该方法中,用退化函数除退化图像的傅立叶变换来计算原始图像的傅立叶变换。

     

    由上式可以看到,即使我们知道退化函数,也可能无法准确复原未退化的图像。因为噪声是一个随机函数,其傅氏变换未知。当退化为0或非常小的值,N(u,v)/H(u,v)之比很容易决定的值。一种解决该问题的方法实现值滤波的频率时期接近原点值。

    2、当在白天进入一个黑暗剧场时,在能看清并找到空座位时需要适应一段时间,试述发生这种现象的视觉原理。

    答:人的视觉绝对不能同时在整个亮度适应范围工作,它是利用改变其亮度适应级来完成亮度适应的。即所谓的亮度适应范围。同整个亮度适应范围相比,能同时鉴别的光强度级的总范围很小。因此,白天进入黑暗剧场时,人的视觉系统需要改变亮度适应级,因此,需要适应一段时间,亮度适应级才能被改变。

    3、简述梯度法与Laplacian算子检测边缘的异同点

    答:梯度算子和Laplacian检测边缘对应的模板分别为

    (梯度算子)                   (Laplacian算子)           (2分)

     

    梯度算子是利用阶跃边缘灰度变化的一阶导数特性,认为极大值点对应于边缘点;而Laplacian算子检测边缘是利用阶跃边缘灰度变化的二阶导数特性,认为边缘点是零交叉点。

        相同点都能用于检测边缘,且都对噪声敏感。(1分)

    4、将高频加强和直方图均衡相结合是得到边缘锐化和对比度增强的有效方法。上述两个操作的先后顺序对结果有影响吗?为什么?

    答:有影响,应先进行高频加强,再进行直方图均衡化。

    高频加强是针对通过高通滤波后的图像整体偏暗,因此通过提高平均灰度的亮度,使图像的视觉鉴别能力提高。再通过直方图均衡化将图像的窄带动态范围变为宽带动态范围,从而达到提高对比度的效果。若先进行直方图均衡化,再进行高频加强,对于图像亮度呈现较强的两极现象时,例如多数像素主要分布在极暗区域,而少数像素存在于极亮区域时,先直方图均衡化会导致图像被漂白,再进行高频加强,获得的图像边缘不突出,图像的对比度较差。

    五、问答题(共35分)

    1、设一幅图像有如图所示直方图,对该图像进行直方图均衡化,写出均衡化过程,并画出均衡化后的直方图。若在原图像一行上连续8个像素的灰度值分别为:0、1、2、3、4、5、6、7,则均衡后,他们的灰度值为多少?

    (15分)

     

    答:①,k=0,1,…7,用累积分布函数(CDF)作为变换函数T[r]处理时,均衡化的结果使动态范围增大。

     

     

     

     

     

     

     

    r0=0

    0.174

    0.174

    1/7

    s0=1/7

    0.174

    r1=1/7

    0.088

    0.262

    2/7

     

     

    r2=2/7

    0.086

    0.348

    2/7

    s1=2/7

    0.174

    r3=3/7

    0.08

    0.428

    3/7

     

     

    r4=4/7

    0.068

    0.496

    3/7

    s2=3/7

    0.148

    r5=5/7

    0.058

    0.554

    4/7

     

     

    r6=6/7

    0.062

    0.616

    4/7

    s3=4/7

    0.120

    r7=1

    0.384

    1

    1

    s4=1

    0.384

    ②均衡化后的直方图:

     

    ③0、1、2、3、4、5、6、7均衡化后的灰度值依次为1、2、2、3、3、4、4、7

    2、对下列信源符号进行Huffman编码,并计算其冗余度和压缩率。(10分)

    符号

    a1

    a2

    a3

    a4

    a5

    a6

    概率

    0.1

    0.4

    0.06

    0.1

    0.04

    0.3

    解:霍夫曼编码:

    霍夫曼化简后的信源编码:

    从最小的信源开始一直到原始的信源

     

    编码的平均长度:

     

     

    3、理想低通滤波器的截止频率选择不恰当时,会有很强的振铃效应。试从原理上解释振铃效应的产生原因。(10分)

    答:理想低通滤波器(频域)的传递函数为:

     


     

    1、给定 0-1 矩阵,求连通域。

    https://blog.csdn.net/lxy_2011/article/details/78852414

    2、写一个函数,求灰度图的直方图。

     

    3、写一个均值滤波中值滤波

     

     

    4、写出高斯算子,Sobel 算子,拉普拉斯算子等,以及它们梯度方向上的区别。

     

    sobel 算子

    索贝尔算子(Sobeloperator)主要用作边缘检测,在技术上,它是一离散性差分算

    子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量

     

    拉普拉斯算子

    Laplace 算子和 Sobel 算子一样,属于空间锐化滤波操作。起本质与前面的 Spatial Filter 操作大同小异,下面就通过 Laplace 算子来介绍一下空间锐化滤波,并对 OpenCV 中提供的 Laplacian 函数进行一些说明。

    • 数学原理

    离散函数的导数退化成了差分,一维一阶差分公式和二阶差分公式分别为

     

     

    5、常用的特征提取方法。

     

    1. SIFT尺度不变特征变换

     

    • SIFT 特征提取的实质

    在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT 所查找到的关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。

    • SIFT 特征提取的方法
      1. 构建 DOG 尺度空间:

     

    模拟图像数据的多尺度特征,大尺度抓住概貌特征,小尺度注重细节特征。通过构建高斯金字塔每一层用不同的参数σ做高斯模糊加权)),保证图像在任何尺度都能有对应的特征点,即保证尺度不变性

    关键点搜索和定位:

    确定是否为关键点,需要将该点与同尺度空间不同σ值的图像中的相邻点比较,如果该点为 max min,则为一个特征点。找到所有特征点后,要去除低对比度和不稳定的边缘效应的点,留下具有代表性的关键点比如,正方形旋转后变为菱形,如果用边缘做识别,4 条边就完全不一样,就会错误;如果用角点识别,则稳定一些。去除这些点的好处是增强匹配的抗噪能力和稳定性。最后,对离散的点做曲线拟合,得到精确的关键点的位置和尺度信息。

    方向赋值:

    为了实现旋转不变性,需要根据检测到的关键点的局部图像结构为特征点赋值。具体做法是用梯度方向直方图。在计算直方图时,每个加入直方图的采样点都使用圆形高斯函数进行加权处理,也就是进行高斯平滑。这主要是因为 SIFT 算法只考虑了尺度和旋转不变形,没有考虑仿射不变性。通过高斯平滑,可以使关键点附近的梯度幅值有较大权重,从而部分弥补没考虑仿射不变形产生的特征点不稳定。注意,一个关键点可能具有多个关键方向,这有利于增强图像匹配的鲁棒性

    ​​​​​​​关键点描述子的生成:

    关键点描述子不但包括关键点,还包括关键点周围对其有贡献的像素点。这样可使关键有更多的不变特性,提高目标匹配效率。在描述子采样区域时,需要考虑旋转后进行双线性插值,防止因旋转图像出现白点。同时,为了保证旋转不变性,要以特征点为中心,在附近领域内旋转θ角,然后计算采样区域的梯度直方图,形成 n SIFT 特征矢量(如  128-SIFT。最后,为了去除光照变化的影响,需要对特征矢量进行归一化处理。

    • SIFT 特征提取的优点

    1SIFT 特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

    2、独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

    3、多量性,即使少数的几个物体也可以产生大量的 SIFT 特征向量;高速性,经优化的 SIFT 匹配算法甚至可以达到实时的要求;

    4、可扩展性,可以很方便的与其他形式的特征向量进行联合;

    5、需要较少的经验主义知识,易于开发。

     

    SIFT 特征提取的缺点

    1、实时性不高,因为要不断地要进行下采样和插值等操作;

    2、有时特征点较少(比如模糊图像

    3、对边缘光滑的目标无法准确提取特征(比如边缘平滑的图像,检测出的特征点过少,对圆更是无能为力

    • SIFT 特征提取可以解决的问题:

    目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。而 SIFT 算法在一定程度上可解决:

     

    目标的旋转、缩放、平移(RST

    图像仿射/投影变换(视点 viewpoint) 光照影响(illumination

    目标遮挡(occlusion杂物场景(clutter

    噪声

     

    • HOG方向梯度直方图
    • HOG 特征提取的实质

    通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog 特征结合 SVM 分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。

    • HOG 特征提取的方法

    1、灰度化;

    2、采用 Gamma 校正法对输入图像进行颜色空间的标准化(归一化,目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;

    3、计算图像每个像素的梯度(包括大小和方向,主要是为了捕获轮廓信息,同时进一步弱化光照的干扰;

    4、将图像划分成小 cells例如 6*6 像素/cell);

    5、统计每个 cell 的梯度直方图(不同梯度的个数,即可形成每个 cell 

    descriptor

    6、将每几个 cell 组成一个 block例如 3*3  cell/block,一个 block 内所有 cell

    的特征 descriptor 串联起来便得到该 block HOG 特征 descriptor

    7、将图像 image 内的所有 block HOG 特征 descriptor 串联起来就可以得到该image(你要检测的目标)的 HOG 特征 descriptor 了。这个就是最终的可供分类使用的特征向量了。

     

    6、常用的目标检测方法。

    • 滑动窗口目标检测
    • R-CNN 系列 - Two Stage 目标检测算法

    1R-CNN

    2Fast R-CNN

    3Faster R-CNN R-FCN

    YOLOSSD - One Stage 目标检测算法

    1 YOLO You Only Look Once

    2SSD Single Shot MultiBox Detector

     

    7、常用的边缘提取方法。

     Canny 算子边缘检测

    Canny 边缘检测算法基于一个多阶边缘算子,是由 John F. Canny 1986 年首先提出的[46],他不但给出了边缘检测的方法,也提出了边缘检测的计算理论。Canny

    Sobel 算子边缘检测同上

    8、常用的插值方法。

    最邻近元法

    双线性内插法

    三次内插法

    9、常用的图像分割算法。

    基于阈值的分割方法

    灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。

    其中 T 为阈值;对于物体的图像元素, g(i, j) =1,对于背景的图像元素g(i, j) =0

    • 基于边缘的分割方法

    基于边缘的分割方法是指通过边缘检测,即检测灰度级或者结构具有突变的地方,确定一个区域的终结,即另一个区域开始的地方。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。

    • 基于小波变换的分割方法

    基于小波变换的阈值图像分割方法的基本思想是首先由二进小波变换将图像的直方图分解为不同层次的小波系数,然后依据给定的分割准则和小波系数选择阈值门限,最后利用阈值标出图像分割的区域。整个分割过程是从粗到细,由尺度变化来控制,即起始分割由粗略的 L2(R)子空间上投影的直方图来实现,如果分割不理想,则利用直方图在精细的子空间上的小波系数逐步细化图像分割。分割算法的计算会与图像尺寸大小呈线性变化。

    • 基于神经网络的分割方法

    近年来,人工神经网络识别技术已经引起了广泛的关注,并应用于图像分割。基于神经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数,然后用决策函数对像素进行分类来达到分割的目的。这种方法需要大量的训练数据。神经网络存在巨量的连接,容易引入空间信息,能较好地解决图像中的噪声和不均匀问题。选择何种网络结构是这种方法要解决的主要问题。

    10、写一个图像 resize 函数(放大和缩小

    11、彩色图像、灰度图像、二值图像和索引图像区别?(索引图像到底是啥?)

    • 彩色图像:每个像素由 RGB 三个分量表示,每个通道取值范围 0~255。数据类型一般为 8 位无符号整形。
    • 灰度图像:每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。
    • 二值图像(黑白图像:每个像素点只有两种可能,0  1.0 代表黑色,1 代表白色。数据类型通常为 1 个二进制位。
    • 索引图像,即它的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之颜色索引矩阵 MAP 的二维数组。MAP 的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0255],则 MAP 矩阵的大小为 2563,用 MAP=[RGB]表示。MAP 中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP 中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为 64,则该像素就与 MAP 中的第64 行建立了映射关系,该像素在屏幕上的实际颜色由第 64 行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵 MAP 得到。索引图像的数据类型一般为 8 位无符号整形

    int8,相应索引矩阵 MAP 的大小为 2563,因此一般索引图像只能同时显示 256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型double。索引图像一般用于存放色彩要求比较简单的图像,如 Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用RGB 真彩色图像。

    12、深度学习中目标检测的常用方法,异同

     

    13、给定摄像头范围和图像大小求分辨率。

     

    14、如何检测图片中的汽车,并识别车型,如果有遮挡怎么办?

     

    15、数字识别的流程。

     

    16、介绍神经网络、SVMAdaBoostkNN…(每一个都可能深入问各种细节)

     

    17、写梯度下降代码。

     

    18、卷积神经网络与神经网络的区别。

    以图片为例,神经网络是将图片的所有像素点作为输入然后训练网络模型进行预测,而卷积神经网络则是先通过不同的卷积核对原始图像进行卷积提取特征,然后池化,然后反复这样的操作最后提取能够标识图片特征的像素点,最后将这些能够代表图片特征的像素点作为神经网络的输入进行预测。

    19、卷积层的作用、pooling 层的作用,全连接层的作用。

    fc:

    1分类器的作用。对前层的特征进行一个加权和卷积层是将数据输入映射到隐层特征空间)将特征空间通过线性变换映射到样本标记空间(也就是 label

    21*1 卷积等价于 fc;跟原 feature map 一样大小的卷积也等价于 fc,也就是输入是一5*3*3 feature map,用一个 3x3x5 的卷积去计算就是 fc 

    3、全连接层参数冗余,用 global average pooling 替代。在 feature map 每个channel 上使用 gap,然后得到 channel 个结果,分别对应相应的类别的 confidence score,最后输入给 softmax。这样做减少参数,防止过拟合。

       4、迁移学习中,目标域和源域差别较大,不用 fc 的网络比用 fc 的网络效果差

    5、卷积层本来就是全连接的一种简化形式:不全连接+参数共享,按照局部视野的启发, 把局部之外的弱影响直接抹为零影响,同时还保留了空间位置信息。这样大大减少了参数并且使得训练变得可控。

    6fc 利用的是上一层所有输入来计算,抛弃了卷积层不同位置的权值共享。对它来说, 输入的不同位置出现同一个 pattern 是不等价的,因此不适合用于输出对于每个位置寻找类似 pattern task,比如 segmentationedge detection 以及 end-to-end object detection 等等,而比较适合用于 classification

    conv 1.相当于一个特征提取器来提取特征

         2.提供了位置信息

         3.减少了参数个数pooling1.提取特征

         2.减少参数

    激活函数:增加网络的非线性表达能力

    20、过拟合和欠拟合分别是什么,如何改善。

     

    211x1 卷积和的作用。

    1*1 卷积等价于 fc;跟原 feature map 一样大小的卷积也等价于 fc

     

    22、计算卷积神经网络某一层参数量。

    22opencv 遍历像素的方式?

    1. 使用 at<typename>(i,j)
    2. 使用指针来遍历(更高效比第一个)
    3. 采用.data 进行遍历(更高效比第一个)

    23LBP 原理?

    主要思想:原始的 LBP 算子定义在像素 3*3 的邻域内,以邻域中心像素为阈值,相邻的 8 个像素的灰度值与邻域中心的像素值进行比较,若周围像素大于中心像素值,则该像素点的位置被标记为 1,否则为 0。这样,3*3 邻域内的 8 个点经过比较可产生 8 位二进制数, 将这 8 位二进制数依次排列形成一个二进制数字,这个二进制数字就是中心像素的 LBP 值,

    LBP 值共有 2828 种可能,因此 LBP 值有 256 种。中心像素的 LBP 值反映了该像素周围区域的纹理信息。 (备注:计算 LBP 特征的图像必须是灰度图,如果是彩色图,需要先转换成灰度图。)

    24HOG 特征计算过程,还有介绍一个应用 HOG 特征的应用?

    1HOG 特征:

    方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog 特征结合 SVM 分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM 进行行人检测的方法是法国研究人员 Dalal 2005 CVPR 上提出的,而如今虽然有很多行人检测算法不断提出, 但基本都是以 HOG+SVM 的思路为主。

     

    1. 主要思想:

    在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。

    1. 具体的实现方法是:

    首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

    1. 提高性能:

    把这些局部直方图在图像的更大的范围内(我们把它叫区间或 block)进行对比度归一化

    contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

    1. 优点:

    与其他的特征描述方法相比,HOG 有很多优点。首先,由于 HOG 是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此 HOG 特征是特别适合于做图像中的人体检测的。

     

    2HOG 特征提取算法的实现过程: 大概过程:

    HOG 特征提取方法就是将一个 image(你要检测的目标或者扫描窗口): 1)灰度化(将图像看做一个 x,y,z(灰度)的三维图像);

    2)采用 Gamma 校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰; 3)计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。

    1. 将图像划分成小 cells例如 6*6 像素/cell);
    2. 统计每个 cell 的梯度直方图(不同梯度的个数),即可形成每个 cell descriptor6将每几个 cell 组成一个 block例如 3*3 cell/block),一个 block 内所有 cell 特征 descriptor 串联起来便得到该 block HOG 特征 descriptor

    7将图像 image 内的所有 block HOG 特征 descriptor 串联起来就可以得到该image(你要检测的目标)HOG 特征 descriptor 了。这个就是最终的可供分类使用的特征向量了。

     

     

    25opencv 里面 mat 有哪些构造函数?

    • 创建 Mat

    1、无参构造方法: Mat::Mat()

    2、创建行数为 rows,列为 col,类型为 type 的图像(图像元素类型,如 CV_8UC3 ) Mat::Mat(int rows, int cols, int type)

     

    3、创建大小为 size,类型为 type 的图像

    Mat::Mat(Size size, int type)

    4、创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始化为值 s Mat::Mat(int rows, int cols, int type, const Scalar& s)

    5、创建大小为 size,类型为 type 的图像,并将所有元素初始化为值 s Mat::Mat(Size size, int type, const Scalar& s)

    6、将 m 赋值给新创建的对象,此处不会对图像数据进行复制,m 和新对象 共用图像数据

    Mat::Mat(const Mat& m)

    7、创建行数为 rows,列数为 col,类型为 type 的图像,此构造函数不创建图像数据所需内存,而是直接使用 data 所指内存,图像的行步长由 step 指定

    Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP) 8、创建大小为 size,类型为 type 的图像,此构造函数不创建图像数据所需内存,而是直接使用 data 所指内存,图像的行步长由 step 指定

    Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)

    9、创建的新图像为 m 的一部分,具体的范围由 rowRange colRange 指定,此构造函数也不进行图像数据的复制操作,新图像与 m  共用图像数据Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange)

    10、创建的新图像为 m 的一部分,具体的范围 roi 指定,此构造函数也不进行图像数据的复制操作,新图像与 m 共用图像数据

    Mat::Mat(const Mat& m, const Rect& roi)

    • Mat 中相关成员的意义

    1data

    Mat 对象中的一个指针,指向存放矩阵数据的内存(uchar* data) 2dims

    矩阵的维度,3*4 的矩阵维度为 2 维,3*4*5 的矩阵维度为 3

    3channels

    矩阵通道,矩阵中的每一个矩阵元素拥有的值的个数,比如说 3 * 4 矩阵中一共 12 个元素,如果每个元素有三个值,那么就说这个矩阵是 3 通道的,即 channels = 3。常见的是一张彩色图片有红、绿、蓝三个通道。

    4depth

    深度,即每一个像素的位数,也就是每个通道的位数。在 opencv Mat.depth()中得到的是一个 0 – 6 的数字,分别代表不同的位数:enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 },可见 0 1

    代表 8 位, 2 3 都代表 16 位,4 5 代表 32 位,6 代表 64 位。

    5elemSize

     

    矩阵中每个元素的大小,每个元素包含 channels 个通道。如果 Mat 中的数据的数据类型是 CV_8U 那么 elemSize = 1;是 CV_8UC3 那么 elemSize = 3,是 CV_16UC2 那么 elemSize = 4

    6elemSize1

    矩阵中数据类型的大小,即 elemSize/channels,也就是 depth 对应的位数。

    7step

    是一个数组,定义了矩阵的布局,参考下图若矩阵有 n 维,则 step 数组大小为 n

    step[n-1] = elemSize(每个矩阵元素的数据大小) step[n-2] = size(1 )*elemSize

    step[n-3] = size(2 )*size(1 )*elemSize

    ...

    step[0] = size(n-1 )*size(n-2 )*...size(1 )*elemSize 8step1

    step1 也是一个数组,为 step/elemSize1,若矩阵有 n 维,则 step1[n- 1]=channels

    9type

    矩阵元素的类型,即创建 Mat 时传递的类型,例如 CV_8UC3CV_16UC2 等。

    26、如何将 buffer 类型转化为 mat 类型? 27opencv 如何读取 png 格式的图片? 28opencv 如何读取内存图片?

    29opencv 里面有哪些库?

    一、core 模块

    1Mat - 基本图像容器

    二、imgproc 模块

    1、图像平滑处理

      1. 高斯滤波器 (Gaussian Filter)
      2. 中值滤波器 (Median Filter)
      3. 双边滤波 (Bilateral Filter) 2、形态学变换
      1. 腐蚀(Erosion
      2. 膨胀 (Dilation)
      3. 开运算 (Opening)
      4. 闭运算(Closing)
      5. 形态梯度(Morphological Gradient)
      6. 顶帽(Top Hat)
      7. 黑帽(Black Hat) 3、图像金字塔

    4、阈值操作

    5、给图像添加边界

    6、图像卷积

      1. 函数 filter2D 就可以生成滤波器
      2. Sobel 导数
      3. Laplace 算子

     

      1. Canny 边缘检测
      2. 霍夫线变换
      3. 霍夫圆变换

    7Remapping 重映射

    8、 仿射变换

    9、 直方图均衡化

    10、模板匹配

    30、用过 opencv 里面哪些函数?

     

    31opencv 里面为啥是 bgr 存储图片而不是人们常听的 rgb

     

    32、你说 opencv 里面的 HOG+SVM 效果很差?他就直接来了句为啥很差?差了就不改了? 差了就要换其他方法?

     

    33、讲讲 HOG 特征?他在 dpm 里面怎么设计的,你改过吗?HOG 能检测边缘吗?里面的核函数是啥?那 hog 检测边缘和 canny 有啥区别?

     

    34、如何求一张图片的均值?

     

    35、如何写程序将图像放大缩小?

     

    36、如何遍历一遍求一张图片的方差?

     

    37、高斯噪声和椒盐噪声

     

    38、常用的图像空间

     

    39HSV HSI 区别:

    解释 1hsv 里面的 v 指的是 RGB 里面的最大的值,v = max(max(r,g),b); HSI I 是平均值,I=(r+g+b) / 3; 另外两个分量应该是一样的,如果只是需要 h 或者 s 的话可以用 matlab 自带的 rgb2hsv 了。

     

    解释 2HSV 颜色空间

    HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于 V=1. 它包含 RGB 模型中的 R=1G=1B=1 三个面,所代表的颜色较亮。色彩 H 由绕 V 轴的旋转角给定。红色对应于角度 ,绿色对应于角度 120°,蓝色对应于角度 240°。在 HSV 颜色模型中,每一种颜色和它的补色相差 180° 。 饱和度 S 取值从 0 1,所以圆锥顶面的半径为 1HSV 颜色模型所代表的颜色域是 CIE 色度图的一个子集,这个 模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H S 无定义, 代表黑色。圆锥的顶面中心处 S=0V=1,H 无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。对于这些点, S=0,H 的值无定义。可以说,HSV 模型中的 V 轴对应于 RGB 颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1S=1,这种颜色是纯色。HSV 模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白

     

    色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。

     

    HSI 色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation 或Chroma)和亮度 (Intensity 或 Brightness)来描述色彩。HSI 色彩空间可以用一个圆锥空间模型来描述。用这种 描述 HIS 色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用 HSI 色彩空间, 它比 RGB 色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在 HSI 色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在 HSI 色彩空间可以大大简化图像分析 和处理的工作量。HSI 色彩空间和 RGB 色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。

    40、简述你熟悉的聚类算法并说明其优缺点。

     

    41、常用的图像空间。

    RGB 颜色空间  :在计算机技术中使用最广泛的颜色空间是 RGB 颜色空间,它是一种与人的视觉系统结构密切相关的模型。根据人眼睛的结构,所有的颜色都可以看成三个基本颜色-红色(red)、绿色(green)和蓝色(blue)的不同组合,大部分显示器都采用这种颜色模型。对一幅三通道彩色数字图像对每个图像像素(x,y),需要指出三个矢量分量 R、G、B

     

    CMY 是工业印刷采用的颜色空间。它与 RGB 对应。简单的类比 RGB 来源于是物体发光,而 CMY 是依据反射光得到的。具体应用如打印机:一般采用四色墨盒,即 CMY 加黑色墨盒。青(C)、品(M)、黄(Y)

     

    HSV(Hue, Saturation, Value)是根据颜色的直观特性由 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。HSV 色系对用户来说是一种直观的颜色模型,对于颜色,人们直观的会问”什么颜色?深浅如何?明暗如何?“, 而 HSV 色系则直观的表示了这些信息。每一种颜色都是由色相(Hue,简 H),饱和度

    (Saturation,简 S)和色明度(Value,简 V)所表示的。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

     

    HSI〔Hue-Saturation-Intensity(Lightness),HSI 或 HSL〕:当人观察一个彩色物

     

    体时, 用色调、 饱和度、 亮度来描述物体的颜色。 HSI 〔 Hue-Saturation- Intensity(Lightness),HSI 或 HSL〕颜色模型用 H、S、I 三参数描述颜色特性,其中H 定义颜色的波长,称为色调;S 表示颜色的深浅程度,称为饱和度;I 表示强度或亮度。在 HSI 颜色模型的双六棱锥表示,I 是强度轴,色调 H 的角度范围为[0,2π],其中,纯红色的角度为 0,纯绿色的角度为 2π/3,纯蓝色的角度为 4π/3。

     

    Lab 颜色空间颜色空间用于计算机色调调整和彩色校正。它独立于设备的彩色模型实现。这一方法用来把设备映射到模型及模型本社的彩色分布质量变化。

     

    YUV(亦称 YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。YUV 主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。

    42、简述你熟悉的聚类算法并说明其优缺点。

     

    43概念SIFT/SURF LDA/PCA

     

    44、请说出使用过的分类器和实现原理。

     

    45 Random Forest 的随机性表现在哪里。

     

    46Graph-cut 的基本原理和应用。

     

    47GMM 的基本原理和应用。

     

    48、用具体算法举例说明监督学习和非监督学习的区别

     

    49、为什么要用数字信号处理

     

    50、小波变换原理

     

    513A 算法,图像降噪,ISP 算法,bm3d 算法原理,相机传感器传输的格式

     

    52、机器学习实现车牌识别

     

    53、红黑树,二叉平衡树的原理和应用

     

    54、简述 hough 变换的原理。请列举一些你觉得能够用 HOUGHT 变换提取的形状。理由是什么?

     

    55、图像特征:了解哪些图像像相关的特征特征描写叙述,特征算子。并举例用什么地方?

     

    56 摄像机拍摄图像与现实世界是什么变换?在这样的变换中有哪些量不变的?请写出这样的变换的代数表达式?

     

    57Deep Learning 听说过多少,并举出眼下哪些领域应用到 Deep learning 技术?

     

    58、图像增强与图像恢复是否是同一个概念?假设是。请解释什么是图像增强图像恢复假设不是,请说明其各自特点和应用领域,以及差异?

     


    一个很好的练习教程

    https://zhuanlan.zhihu.com/p/112057607

    中文原版:https://github.com/gzr2017/ImageProcessing100Wen

    展开全文
  • 数字图像处理第九章——形态学图像处理

    万次阅读 多人点赞 2019-05-11 08:31:12
    数字图像处理第九章数字图像处理---形态学图像处理()预备知识1.1 预备知识1.1.1 集合理论中的基本概念1.2 二值图像、集合及逻辑算子(二)膨胀和腐蚀2.1 膨胀2.2 结构元的分解2.3 strel函数2.4 腐蚀(三) 膨胀...

    数字图像处理—形态学图像处理

    同样的,暂时对书上已经写得很清楚的知识点不再重复赘述,主要做一些总结,思考以及知识点的梳理和扩展。

    (一)预备知识

    介绍一下形态学中的一些基本概念。

    1. 用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具
    2. 基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析识别的目的
    3. 形态学图像处理的数学基础和所用语言是集合论
    4. 形态学图像处理的应用可以简化图像数据, 保持它们基本的形状特性,并除去不相干的结 构
    5. 形态学图像处理的基本运算有4个:膨胀、 腐蚀、开操作和闭操作

    1.1 集合理论中的基本概念

    介绍一下比较陌生的几个概念,其他的看书就好:

    1. 所有像素坐标的集合均不属于集合A,记为 A c A^c Ac,由下式给出:
      在这里插入图片描述
      这个集合称为集合A的补集

    2. 集合B的反射,定义为:

      即关于原集合原点对称 .

    3. 集合A平移到点z=(z1,z2),表示为(A)z,定义为:

    1.2 二值图像、集合及逻辑算子

    二值图像

    二值图像(Binary Image),按名字来理解只有两个值,0和1,0代表黑,1代表白,或者说0表示背景,而1表示前景。其保存也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个像素看成随机变量,一共有N个像素,那么二值图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255255255的N次方种变化。也就是说同样尺寸的图像,二值图像保存的信息更少。二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。

    二值图像集合

    如果A和B是二值图像,那么C=A∪B仍是二值图像。这里,如 果 A 和B中相应的像素不是前景像素就是背景像素,那么 C中的这个像素就是前景像素。以第一种观点,函数 C由下式给出:
    在这里插入图片描述
    另一方面,运用集合的观点,C由下式给出:
    在这里插入图片描述
    集合运算

    1. A为图像集合,B为结构元素(集合)。
    2. 数学形态学运算时B对A进行操作。
    3. 结构元素要有1个原点(即结构元素参与形态学运算的参考点),可以是中心像素,原则上可选任何像素。
      注意:原点可以包含在结构元素中,也可以不包含在结构元素中,但运算的结果常不相同。

    编码

    f = imread('D:\数字图像处理\第九章学习\Fig0903(a).tif');
    g = imread('D:\数字图像处理\第九章学习\Fig0903(b).tif');
    subplot(2,3,1), imshow(f);title('(a)二值图像 A:');
    subplot(2,3,2), imshow(g);title('(b)二值图像 B:');
    subplot(2,3,3), imshow(~f);title('(c)A的补集~A:');
    subplot(2,3,4), imshow(f|g);title('(d) A和B的并集 A|B:');
    subplot(2,3,5), imshow(f&g);title('(e)A和B的交集 A & B:');
    subplot(2,3,6), imshow(f&~g);title('(f)A和B的差集 A&~B');
    

    代码运行效果如下
    在这里插入图片描述
    分析

    图像(d)是 “ UTK”和 “ GT” 图像的并集,包括来自两幅图像的所有前景像素。相反,两幅图像的交集(图(e))显示了字母 “ UTK”和 “ GT”中重叠的像素。最后,集合的差集图像(图(f))显示了 “ UTK”中除去 “ GT” 像素后的字母。

    (二)膨胀和腐蚀

    2.1 膨胀

    膨胀:膨胀是在二值图像中“加长”或“变粗”的操作。这种特殊的方式和变粗的程度由一个称为结构元素的集合控制。(实际就是将结构元素的原点与二值图像中的1重叠,将二值图像中重叠部分不是1的值变为1,完成膨胀)。

    公式

    A和B是两个集合,A被B膨胀定义为:

    公式解释:

    1. B的反射进行平移与A的交集不为空。
    2. B的反射:相对于自身原点的映象。
    3. B的平移:对B的反射进行位移

    图解

          

    (a)集合A    (b)结构元素B (黑色为原点所在)

          

    (c)结构元素B的映像    (d)图中两种阴影部分(深色为扩大的部分)合起来为A+B

    注意

    1. 膨胀运算只要求结构元素的原点在目标图像的内部平移,换句话说,当结构元素在目标图像上平移时,允许结构元素中的非原点像素超出目标图像的范围
    2. 膨胀运算具有扩大图像和填充图像中比结果元素小的成分的作用,因此在实际应用中可以利用膨胀运算连接相邻物体和填充图像中的小孔和狭窄的缝隙

    膨胀举例

    膨胀函数

    D = imdilate(A,B)

    图像膨胀的应用:桥接文字裂缝

    编码:

    A = imread('D:\数字图像处理\第九章学习\Fig0906(a).tif');
    B = [0 1 0; 1 1 1; 0 1 0];   %指定结构元素由0和1组成的矩阵
    A2 = imdilate(A, B);    %二值图像
    subplot(1,2,1), imshow(A);title('(a)包括断开文本的输入图像:');
    subplot(1,2,2), imshow(A2);title('(b)膨胀后图像:');
    

    在这里插入图片描述
    图片中字体的加粗,且填充了字母中的小孔和狭窄的缝隙。

    2.2 结构元的分解

    公式
    在这里插入图片描述
    公式理解

    B膨胀A等同于B1先膨胀A,再用B2膨胀之前的结果。

    举例

    下面是由1组成的5x5数组的膨胀:
    在这里插入图片描述
    这个结构元能够分解为值为 1 的 5 元素行矩阵和值为 1 的 5 元素列矩阵:

    在这里插入图片描述
    分析

    在原结构元中,元素个数为 25; 但在行列分解后,总元素数目仅为 10。这意味着首先用 行结构元膨胀,再用列结构元膨胀,能够比 5x5 的数组膨胀快 2.5 倍。在实践中,速度的增长稍微慢一些,因为在每个膨胀运算中总有些其他开销。然而,由分解执行获得的速度方面的增 长仍然有很大意义。

    2.3 strel函数

    工具箱函数 strel 用于构造各种形状和大小的结构元。

    基本语法

    se = strel(shape, parameters)

    shape用于指定希望形状的字符串,parameters是描述形状信息的参数列表。

    具体例子参考课本,是基础语法。

    2.4 腐蚀

    腐蚀:与膨胀相反,对二值图像中的对象进行“收缩”或“细化”。(实际上将结构元素的原点覆盖在每一个二值图像的1上,只要二值图像上有0和结构元素的1重叠,那么与原点重叠的值为0)同样由集合与结构元素完成。

    公式

    A和B是两个集合,A被B腐蚀定义为:

    公式解释:

    1. A被 B 腐蚀是包含在A中的B由z平移的所有点z的集合。
    2. B包含在A中的声明相当于B不共享A背景的任何元素。

    图解
         

    (a)集合A(阴影部分)   (b)结构元素B(阴影部分,深色部分为原点)(c)阴影部分合起来为A-B

    注意

    1. 当结构元素中原点位置不为1(也即原点不属于结构元素时),也要把它看作是1,也就是说,当在目标图像中找与结构元素B相同的子图像时,也要求子图像中与结构元素B的原点对应的那个位置的像素的值是1。
    2. 腐蚀运算要求结构元素必须完全包括在被腐蚀图像内部:换句话说,当结构元素在目标图像上平移时,结构元素中的任何元素不能超过目标图像范围。
    3. 腐蚀运算的结果不仅与结构元素的形状选取有关,而且还与原点位置的选取有关
    4. 腐蚀运算具有缩小图像和消除图像中比结构元素小的成分的作用,因此在实际应用中,可以利用腐蚀运算去除物体之间的粘连,消除图像中的小颗粒噪声

    腐蚀举例

    腐蚀函数

    A2 = imerode(A, se)

    图像腐蚀应用:消除图像细节部分

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0908(a).tif');
    se = strel('disk', 10);
    g = imerode(f, se);
    se = strel('disk', 5);
    g1 = imerode(f, se);
    g2 = imerode(f, strel('disk', 20));
    subplot(2,2,1), imshow(f);title('(a)原始图像的尺寸为480x480像素:');
    subplot(2,2,2), imshow(g);title('(b)用半径为10的圆形腐蚀:');
    subplot(2,2,3), imshow(g1);title('(c)用半径为5的圆形腐蚀:');
    subplot(2,2,4), imshow(g2);title('(d)用半径为20的圆形腐蚀');
    

    分析

    假设要除去图a中的细线,但想保留其他结构,可以选取足够小的结构元来匹配中心方块,但较粗的边缘线因太大而无法匹配全部线。图b几乎成功去掉了模板中的细线,图c中一些引线还没有去掉,图d中引线都被去掉了,但是边缘引线也丢失了,所以选取合适的结构元很重要。

    (三) 膨胀与腐蚀的结合

    3.1 开操作和闭操作

    开操作

    1. 使图像的轮廓变得光滑,断开狭窄的间断和消除细的突出物。
    2. 使用结构元素B对集合A进行开操作,定义为:

      先用B对A腐蚀,然后用B对结果膨胀。
    3. 与开操作等价的数学表达式为:
    4. A o B 的边界通过B中的点完成。
    5. B在A的边界内转动时,B中的点所能到达的A的边界的最远点。
    6. A o B 是 A的子集合。
    7. 如果C是D的子集,则 C o B是 D o B的子集。
    8. (A o B) o B = A o B

    闭操作

    1. 同样使图像的轮廓变得光滑,但与开操作相反,它能消除狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的裂痕。
    2. 使用结构元素B对集合A进行闭操作,定 义为:

      先用B对A膨胀,然后用B对结果腐蚀。
    3. A . B的边界通过B中的点完成 。
    4. B在A的边界外部转动 :
    5. A 是 A . B的子集合。
    6. 如果C 是 D 的子集 , 则C . B 是 D . B的子集。
    7. (A . B) . B = A . B

    工具箱函数

    开操作:

    C = imopen(A, B)

    闭操作:

    C = imclose(A, B)

    A为二值图像,B为0,1矩阵组成,并且是指定结构元素。

    函数imopen 和 imclose 的应用

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0910(a).tif');
    se = strel('square', 40);
    fo = imopen(f, se);
    fc = imclose(f, se);
    foc = imclose(fo, se);
    subplot(2,2,1), imshow(f), title('(a)原图');
    subplot(2,2,2), imshow(fo), title('(b)开操作');
    subplot(2,2,3), imshow(fc), title('(c)闭操作');
    subplot(2,2,4), imshow(foc), title('(d) (b)的闭操作结果');
    

    分析

    1. 图(a)中的图像设计了一些用于演示开操作和闭操作的特征,比如细小突起、细的桥接点、几个弯口、孤立的小洞、 小的孤立物和齿状边缘。
    2. 图 (b)显示了结果。注意,从图中可以看出,细的突出和外部点的边缘的不规则部分被去除掉了,细的桥接和小的孤立物也被去除了。
    3. 图 ©中的结果: 这里,细的弯口、内部的不规则边缘和小洞都被去除了。先做开操作的闭操作的结果有平滑效果.
    4. 图 (d)显示了平滑过的物体。

    噪声滤波器

    先开操作再闭操作,构成噪声滤波器。

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0911(a).tif');
    se = strel('square', 6);
    fo = imopen(f, se);
    foc = imclose(fo, se);
    subplot(1,3,1), imshow(f), title('(a)带噪声的指纹图像');
    subplot(1,3,2), imshow(fo), title('(b)图像的开操作');
    subplot(1,3,3), imshow(foc), title('(c)先用开操作,再用闭操作');
    

    在这里插入图片描述
    分析

    1. 图(a)是受噪声污染的指纹二值图像,噪声为黑色背景上的亮元素和亮指纹部分的暗元素。
    2. 图(b)所示的图像。发现,对图像进行开操作可以去除噪声点,但是这种处理在指纹的纹脊上又引入一些缺口
    3. 图( c )显示了最终结果。在这个结果中,大多数噪声被消除了,开运算的闭运算可以给指纹填充缺口,但是指纹纹路并没有完全恢复 。

    3.2 击中或击不中变换

    击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。研究解决目标图像识别模式识别等领域,在处理目标图像和背景的关系上能够取得更好的效果。

    作用:形状检测的基本工具。

    公式

    A中对B进行的匹配(击中)表示为:

    B1是由与一个对象相联系的B元素构成的集合,B1是由与一个对象相联系的B元素构成的集合。

    图解

    工具箱函数

    C = bwhitmiss(A, B1, B2)

    其中的 C为结果,A为输入图像,B1、B2表示结构元素。

    定位图像中物体左上角的像素

    编码:

    f = imread('D:\数字图像处理\第九章学习\Fig0913(a).tif');
    B1 = strel([0 0 0;0 1 1; 0 1 0]);
    B2 = strel([1 1 1;1 0 0;1 0 0]);
    g = bwhitmiss(f,B1,B2);
    subplot(1,2,1), imshow(f), title('(a)原始图像');
    subplot(1,2,2), imshow(g), title('(b)击中、击不中变换的结果');
    

    分析

    1. 图(a)显示了包括各种尺寸的正方形图像。我们要定位有东、南相邻像素(这些 “击中”)和没有东北、北、西北、西和西南相邻像素(这些 “击不中”)的前景像素。这些要求导致以下B1,B2两个结构元。这两个结构元都不包括东南邻域像素,这称为不关心像素。用函数 bwhitmiss 来计算变换。
    2. 图 (b)中的每个单像素点都是图 (a)中物体左上角的像素。图 (b)中是放大后的像素,以便更清晰。bwhitmiss的替代语法可以把Bl 和 B2 组合成间隔矩阵。只要 B1等于 1 或-1,B2 等于 1, 间隔矩阵就等于 1。对于不关心像素,间隔矩阵等于 0。

    3.3 bwmorph函数

    工具箱函数 bwmorph 执行许多以膨胀、腐蚀和查找表运算相结合为基础的形态学操作, 调用语法为:

    g = bwmorph(f, operation, n);

    f 是输入的二值图像,operation 是指定所希望运算的字符串,n 是指定重复次数的正整数。

    细化

    f = imread('D:\数字图像处理\第九章学习\Fig0911(a).tif');
    g1 = bwmorph(f, 'thin',1);
    g2 = bwmorph(f, 'thin',2);
    ginf = bwmorph(f,'thin', Inf);
    subplot(1,4,1),imshow(f);title('(a)指纹图像:');
    subplot(1,4,2),imshow(g1);title('(b)细化一次后的指纹图像:');
    subplot(1,4,3),imshow(g2);title('(c)细化两次后的图像:');
    subplot(1,4,4),imshow(ginf);title('(d)一直细化到稳定状态的图像:');
    

    在这里插入图片描述
    骨骼化

    f = imread('D:\数字图像处理\第九章学习\Fig0916(a).tif');
    fs = bwmorph(f,'skel',Inf);
    for k = 1:5
        fa = fs & ~endpoints(fs);
    end
    subplot(1,3,1),imshow(f);title('(a)骨头图像:');
    subplot(1,3,2),imshow(fs);title('(b)使用函数 bwmorph 得到的骨豁:');
    subplot(1,3,3),imshow(fa);title('(c)使用函数 endpoint 裁剪后的骨豁:');
    

    在这里插入图片描述
    分析:骨骼化(Gonzalez和 Woods[2008])是另一种减少二值图像中的物体为一组细“笔画”的方法, 这些细骨豁仍保留原始物体形状的重要信息。当 operation 置为 'skel '时,函数 bwmorph 执行骨骼化。令 f 代表图(a)中类似骨头的图像,为了计算骨骼,调用 bwmorph, 令 n=Inf,图(b)显示了骨骼化的结果,与物体的基本形状相似。骨骼化和细化经常产生短的无关的“毛刺” ,有时这被叫做寄生成分。清除(或除去)这些“毛刺”的处理称为裁剪。方法是反复确认并去除端点。通过 5 次去除端点的迭代,得以后处理骨骼化图像 fs,图(c )显示了结果。

    (四)标记连通分量

    工具箱函数

    [L, num] = bwlabel (f, conn)

    f 是输入二值图像,coon指定希望的连接方式(不是4连接就是8连接),输出L叫做标记矩阵,函数num则给出找到的连通分量总数。

    计算和显示连通分量的质心:

    f = imread('D:\数字图像处理\第九章学习\Fig0917(a).tif');
    imshow(f);title('(a)标注连通分量原始图像:');
    [L,n]=bwlabel(f);        %L为标记矩阵,n为找到连接分量的总数
    [r,c]=find(L==3);        %返回第3个对象所有像素的行索引和列索引 
    rbar=mean(r);
    cbar=mean(c);
    figure,imshow(f);title('(b)标记所有对象质心后的图像:');
    hold on            %保持当前图像使其不被刷新
    for k=1:n
       [r,c]=find(L==k);
       rbar=mean(r);
       cbar=mean(c);
       plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k',...
            'MarkerFaceColor','k','MarkerSize',10);
       plot(cbar,rbar,'Marker','*','MarkerFaceColor','w'); %其中的marker为标记
    end
    

    (五)形态学重建

    概述:重构是一种涉及到两幅图像和一个结构元素的形态学变换。一幅图像,即标记,是变换的开始点。另一幅图像是掩膜,用来约束变换过程。结构元素用于定义连接性。

    定义:若G是掩膜,f为标记,则从f重构g可以记为 R g R_g Rg(f),由下列的迭代过程定义:

    1. 将h1初始化为标记图像f。
    2. 创建结构元素 :B = ones(3)。
    3. 重复

      直到

      其中,标记f必须是g的一个子集。

    函数

    out = imreconstruct(marker,mask)

    masker是标记,mask是掩膜。

    5.1 通过重建进行开操作

    在形态学开操作中,腐蚀典型地去除小的物体,且随后的膨胀趋向于恢复保留的物体形状。 然而,这种恢复的精确度取决于形状和结构元之间的相似性。本节讨论的方法,通过重建进行开操作能准确地恢复腐蚀之后的物体形状。用结构元B对图像 G通过重建进行开操作可定义为 :
    在这里插入图片描述

    f = imread('D:\数字图像处理\第九章学习\Fig0917(a).tif');
    subplot(3,2,1),imshow(f);title('(a)重构原始图像');
    fe=imerode(f,ones(51,1));%竖线腐蚀
    subplot(3,2,2),imshow(fe);title('(b)使用竖线腐蚀后的结果');
    fo=imopen(f,ones(51,1));%竖线做开运算
    subplot(3,2,3),imshow(fo);title('(c)使用竖线做开运算结果');
    fobr=imreconstruct(fe,f);%fe做标记
    subplot(3,2,4),imshow(fobr);title('(d)使用竖线做重构开运算');
    ff=imfill(f,'holes');%对f进行孔洞填充
    subplot(3,2,5),imshow(ff);title('(e)对f填充孔洞后的图像');
    fc=imclearborder(f,8);%清除边界,2维8邻接
    subplot(3,2,6),imshow(fc);title('(f)对f清除边界后的图像');
    

    在这里插入图片描述
    分析

    1. 传统开运算中,腐蚀去除掉小对象,随后的膨胀恢复原始对象形状,但受元素结构影响,恢复的往往不是很精确。
    2. 重构则能精确恢复原始图像。

    5.2 填充孔洞

    令I表示二值图像,假设我们选择标记图像F,除了图像边缘外,其余部分都为 0, 边缘部分设值为 1-I:
    在这里插入图片描述
    函数

    g = imfill(f,‘holes’);

    5.3 清除边界物体

    定义标记图像F为:
    在这里插入图片描述
    其中,/是原始图像,然后以/作为模板图像,重建
    在这里插入图片描述
    得到一幅图像H, 其中仅包含与边界接触的物体。

    函数

    g = imclearborder(f,conn)

    f 是输入图像,g 是结果。conn 的值不是 4 就是 8(默认)。 物体更亮且与图像边界相连接的结构。

    (六)灰度级形态学

    6.1 膨胀和腐蚀

    灰度图像的形态学梯度定义为膨胀运算与腐蚀运算的结果之间的差值。

    膨胀定义

    1. 使用结构元素b对f的灰度膨胀定义为:

      其中, D f D_f Df D b D_b Db分别是f和b的定义域,f和b是函数而不是二值形态学情况中的集合。

    2. 当结构元素b是平坦的,即b(x,y)在其定义域内都为0时:
      在这里插入图片描述

    腐蚀定义

    1. 使用结构元素b对f的灰度腐蚀定义为:
      在这里插入图片描述
      其中, D f D_f Df D b D_b Db分别是f和b的定义域。

    2. 当结构元素b是平坦的,即b(x,y)在其定义域内都为0时:
      在这里插入图片描述

    膨胀和腐蚀操作

    编写代码:

    f = imread('D:\数字图像处理\第九章学习\Fig0923(a).tif');
    se=strel('square',3);  %构造了一个平坦的3x3的结构元素
    gd=imdilate(f,se);    %对原图像进行膨胀操作
    ge=imerode(f,se);     %对原图像进行腐蚀操作
    morph_grad=imsubtract(gd,ge); %从膨胀的图像中减去腐蚀过得图像产生一个形态学梯度。
    subplot(3,2,1);imshow(f,[]);title('(a)原始图像');
    subplot(3,2,2),imshow(gd,[]);title('(b)膨胀的图像');
    subplot(3,2,3),imshow(ge,[]);title('(c)腐蚀的图像');
    subplot(3,2,4),imshow(morph_grad,[]);title('(d)形态学梯度');
    

    在这里插入图片描述
    分析

    1. 膨胀得到的图像比原图像更明亮,并且减弱或消除小的,暗的细节部分。即比原图像模糊。
    2. 腐蚀得到的图像更暗,并且尺寸小,明亮的部分被削弱 。

    6.2 开操作和闭操作

    图像开运算

    1. 在灰度图像中,开操作的表达式与二值图像拥有相同的形式。
    2. 把一幅图像看做是一个三维表明,其亮度值代表xy平面上的高度值,则当结构元素b在f下面活动时,结构元素的任何部分的最高值构成了开运算的结果。
    3. 先进行腐蚀操作可以除去小的亮的图像细节,但这样会使图像变暗,接下来进行膨胀操作增强图像的整体亮度。

    图像闭运算

    1. 在灰度图像中,闭操作的表达式与二值图像拥有相同的形式。
    2. 当结构元素b在f的上面活动时,结构元素的任何部分的最低值构成了闭运算的结果 。
    3. 先通过膨胀操作除去图像中的暗细节,同时增加图像的亮度,接下来对图像进行腐蚀,而不会将膨胀操作除去的部分重新引入图像中。

    用开操作和闭操作做形态学平滑

    f = imread('D:\数字图像处理\第九章学习\Fig0925(a).tif');
    subplot(3,2,1),imshow(f);  
    title('(a)木钉图像原图');   
    se=strel('disk',5);     %disk其实就是一个八边形  
    fo=imopen(f,se);        %经过开运算  
    subplot(3,2,2),imshow(f);  
    title('(b)使用半径5的disk开运算后的图像');   
    foc=imclose(fo,se);  
    subplot(3,2,3),imshow(foc);  
    title('(c)先开后闭的图像'); 
    focd=imclose(f,se);  
    subplot(3,2,4),imshow(focd);  
    title('(d)原始图像的闭操作'); 
    foce=imopen(focd,se);  
    subplot(3,2,5),imshow(foce);  
    title('(e)先闭后开的图像'); 
    fasf=f;  
    for i=2:5  
        se=strel('disk',i);  
        fasf=imclose(imopen(fasf,se),se);  
    end  
    subplot(3,2,6),imshow(fasf);  
    title('(f)使用开闭交替滤波后图像'); 
    
    
    

    在这里插入图片描述
    分析

    1. 图 (b)显示了开操作的图像 fo, 在这里,我们看到,亮区域己经被调低了(平滑),木钉上的暗条文几乎没有受影响。
    2. 图 (c )显示了开操作的闭操作 foe。现在我们注意到,暗区域已经被平滑得很好了,结果是整个图像得到全部平滑。这种过程通常叫做开-闭滤波。先开运算后闭运算构成噪声滤波器,用来平滑图像并去除噪声。
    3. 图 (d)显示了原始图像的闭操作结果。木钉上的暗条文已经被平滑掉了,主要留下了亮的细节(注意背景中的亮条文)。
    4. 图 (e)显示了这些条文的平滑和木钉表面的进一步平滑效果。最终结果是原始图像得到全部平滑。
    5. 图(f)是交替顺序滤波,交替顺序滤波的一种形式是用不断增大的一系列结构元执行开-闭滤波,刚开始用小的结构元,增加大小,直到与图 (b)和©中结构元的大小相同为止。交替顺序滤波与单个开-闭滤波相比,处理图像更平滑一些。

    非均匀背景的补偿

    f = imread('D:\数字图像处理\第九章学习\Fig0926(a).tif');
    g = f>=(255*graythresh(f));
    se=strel('disk',100);
    fo=imopen(f,se);
    f2=imsubtract(f,fo); 
    g1 = f2>=(255*graythresh(f2));
    subplot(2,3,1),imshow(f);  
    title('(a)原始图像');  
    subplot(2,3,2),imshow(g);  
    title('(b)经过阈值处理后的图像');   
    subplot(2,3,3),imshow(f);  
    title('(c)原图开运算后的图像');  
    subplot(2,3,4),imshow(f2);  
    title('(d)原图减去开运算');  
    subplot(2,3,5),imshow(g1);  
    title('(e)最终结果');  
    

    在这里插入图片描述
    分析

    1. 图 (a) :显示了一幅米粒的图像f,图像下部的背景比上部的黑。这样的话,对不平坦的亮度进行阈值处理会很困难。
    2. 图 (b) "是阈值处理方案,图像顶端的米粒被很好地从背景中分离开来,但是图像底部的米粒没有从背景中正确地提取出来。
    3. 图(c ):对图像进行开操作,可以产生对整个图像背景的合理估计。
    4. 图(d) :把图(c )从原始图像中减去,生成一幅拥有合适的均勾背景的米粒图像.
    5. 图(e):显示了新的经阈值处理后的图像。注意,改进效果超过了图 (b)。

    粒度测定 :

    颗粒分析:形态学技术可以用与间接地度量颗粒的大小分布,但不能准确地识别每一个颗粒。对于形状规则且亮于背景大的颗粒,基本方法是应用不断增大尺寸的形态学开运算。

    f = imread('D:\数字图像处理\第九章学习\Fig0926(a).tif');
    sumpixels=zeros(1,36);  
    for k=0:35  
        se=strel('disk',k);  
        fo=imopen(f,se);  
        sumpixels(k+1)=sum(fo(:));  
    end    
    %可以看到,连续开运算之间的表面积会减少  
    plot(0:35,sumpixels),xlabel('k'),ylabel('surface area');  
    title('(a)表面积和结构元素半径之间的关系');  
    figure,plot(-diff(sumpixels));%diff()函数为差分或者近似倒数,即相邻2个之间的差值  
    xlabel('k'),ylabel('surface area reduction');  
    title('(b)减少的表面积和结构元素半径之间的关系'); 
    

    分析

    1. (a)连续开运算之间的表面积会减小。
    2. (b)图峰值表明出现了大量的有着这种半径的对象。

    6.3 重建

    重建

    1. h极小值变换:标记图像是由掩膜挑选ing减去常量所得。
    2. 开运算重建:先腐蚀后重建。
    3. 闭运算重建:对图像求补、计算其开操作重建并对结果求补。

    重建移去复杂的背景

    f = imread('D:\数字图像处理\第九章学习\Fig0930(a).tif');
    subplot(3,3,1),imshow(f);  
    title('(a)原图像');    
    f_obr=imreconstruct(imerode(f,ones(1,71)),f);  
    subplot(3,3,2),imshow(f_obr);  
    title('(b)重建的开操作');   
    f_o=imopen(f,ones(1,71));    
    subplot(3,3,3),imshow(f_o);  
    title('(c)开操作');    
    f_thr=imsubtract(f,f_obr);    %顶帽重构
    subplot(3,3,4),imshow(f_thr);  
    title('(d)重建的顶帽操作');  
    f_th=imsubtract(f,f_o)    %标准顶帽运算,方便比较
    subplot(3,3,5),imshow(f_th);  
    title('(e)顶帽操作');  
    g_obr=imreconstruct(imerode(f_thr,ones(1,11)),f_thr);  
    subplot(3,3,6),imshow(g_obr);  
    title('(f)用水平线对(b)经开运算后重建图');   
    g_obrd=imdilate(g_obr,ones(1,2));  
    subplot(3,3,7),imshow(g_obrd);  
    title('(g)使用水平线对(f)进行膨胀');  
    f2=imreconstruct(min(g_obrd,f_thr),f_thr);  
    subplot(3,3,8),imshow(f2);  
    title('(h)最后的重建结果');  
    

    在这里插入图片描述
    分析

    为了消除每个键盘上方的水平反射光,利用这些反射比图像中任何文本字符都要宽的这个事实。用长水平线的结构元执行重建的开操作,重建的开操作(f_obr) 显示于图(b)中。为了进行对比,图(c )显示了标准的开操作 (f_o) 。重建的开操作在提取水平的相邻键之间的背景方面的确较好。从原始图像中减去重建的开操作被称为顶帽重建 , 结果示于图 (d)中。消除图 (d)中键右边的垂直反射光。这可以通过用短的水平线执行重建的开操作来完成,在这个结果中(见图 (f)),垂直的反射光不见了。但是,包括字母的垂直的细笔画也不见了。我们利用了那些已被错误消除的字母非常接近第一次膨胀(见图 (g))后还存在的其他字符这一事实,以 f_thr 作为模板,以 min(g_obrd,f_thr) 作为标记,图 (h)显示了最后的结果。注意,背景上键盘的阴影和反射光都成功去除了。

    展开全文
  • 【计算机视觉】数字图像处理(四)—— 图像增强

    千次阅读 多人点赞 2022-01-03 11:31:45
    数字图像处理(四)—— 图像增强图像增强的定义图像增强方法图像增强的点运算()灰度变换1. 线性变换2. 分段线性变换3. 非线性灰度变换对数变换指数变换(二) 直方图修整法1. 直方图均衡化2. 直方图规定化...
  • 数字图像处理第八章——图像压缩

    万次阅读 2019-05-09 03:33:04
    数字图像处理第八章数字图像处理---图像压缩() 背景(二) 编码冗余2.1 霍夫曼码2.2 霍夫曼编码2.3 霍夫曼译码(三)空间冗余(四)不相关的信息(五)JPEG 压缩5.1 JPEG5.2 JPEG 2000(六)视频压缩6.1 MATLAB...
  • 数字图像处理(2)——数字图像获取

    千次阅读 2022-03-19 11:12:16
    文章目录2.1图像数字化2.1.1数字图像的表示2.1.1.1黑白图像2.1.1.2灰度图像2.1.1.3彩色图像2.1.2图像数字化过程2.1.2.1采样2.1.2.2量化2.1.2.3采样、量化参数与数字化图像间的关系2.1.2.4图像数字化设备2.2图像灰度...
  • Photoshop中只能通过“清除参考线”的菜单命令将图像窗口中所有的参考线清除,没有办法只清除某个参考线。 答案:看左侧 题目:   Photoshop中填充前景色的快捷键是Ctrl+Delete。 答案:看左侧
  • 数字图像处理(dip)

    千次阅读 2022-01-11 10:48:54
    总得来说,低频分量(低频信号)代表着图像中亮度或者灰度值变化缓慢的区域,也就是图像中大片平坦的区域,描述了图像的主要部分。高频分量(高频信号)对应着图像变化剧烈的部分,也就是图像的边缘(轮廓)或者噪声...
  • 图像传感器可将光信号转化为电信号,其光电参数直接决定了成像质量,是所有成像设备中的核心关键器件。图像传感器分为 CCD器件和CMOS 器件。CMOS图像传感器在帧频、集成度、可靠性、功耗和成本等方面优势明显。随着 ...
  • 平面数字图像设计
  • 图像处理(5)--图像的傅里叶变换

    万次阅读 多人点赞 2019-07-06 10:42:52
    傅里叶变换及其反变换1.1 为什么要在频率域研究图像增强?1.2 傅里叶变换 1. 傅里叶变换及其反变换 1.1 为什么要在频率域研究图像增强? 可以利用频率成分和图像外表之间的对应关系。一些在空间域表述困难的增强...
  • 主要内容: 1、空间增强 1.1 卷积增强 1.2 非定向边缘增强 1.3 聚焦分析 1.4 纹理分析 1.5 图像融合 1.6 图像锐化 2、辐射增强 2.1 查找表拉伸 ...4.3 傅立叶显示变换 4.4 周期性噪声去除 4.5 同态滤波
  • 第一章——绪论 数字图像处理的概念   图像:对客观对象的一种相似性的,生动的写真...图像处理:对图像进行一系列操作,达到预期目的。   模拟图像处理 借助光学设备   数字图像处理 借助计算机 (计算机图像处理)
  • 本节书摘来自华章出版社《Arduino计算机视觉编程》书中的第3章,第3.1节,作者[土耳其] 欧森·奥兹卡亚(zen zkaya),吉拉伊·伊利茨(Giray Yilliki),更多章节内容可以访问云栖社区“华章计算机”公众号...
  • 图像处理基础知识

    千次阅读 2021-12-21 21:46:54
    文章目录数字图像处理基础数字图像的基本类型矢量图位图二值图像(黑白图像)灰度图像索引图象真彩色RGB图像图像数字化器图像数字化器的组件采样孔:扫描器件:光传感器:量化器:输出介质:图像数字化器的性能...
  • 医学图像处理填空

    千次阅读 2021-06-18 13:29:01
    1.现代医学影像技术的发展源于德国科学家伦琴于1895年发现的[X线]并...6.超声成像是不可见也听不到的超声波能量实现的人体成像,对人体[无]辐射伤害。 7.CT成像是通过检测人体对[X线]吸收量而获得的图像。 8.CT得到人
  • 打开幅彩色图像Image1,使用Matlab图像处理函数,对其进行下列变换:(1)对以上处理变换参数,查看处理效果;(2)更改伪彩色增强方法为热金属编码或彩虹编码;(3)设计不同的平滑滤波、锐化滤波方法,查看处理...
  • 开始学习使用OpenCV对图像进行处理了,将陈年旧物整理一下,这是数字图像处理课程的期末课题实验之、实验目的 (1)巩固和综合应用数字图像相关知识; (2)实现车牌识别; (3)提高分析问题和解决问题的...
  • 数字图像处理知识点复习(上)

    千次阅读 2021-12-29 10:16:37
    数字图像处理绪论(一些基本概念)图像(Image)数字图像图像表示矩阵表示向量表示数字图像处理概念特点目的高级图像编辑数字图像处理基础视觉过程采样量化图像类型二值图像灰度图像真彩色图像伪彩色图像图像存储...
  • 图像常用的格式总结及比较

    千次阅读 2019-08-02 13:56:30
    .PNG格式------无损压缩 PNG(Portable Network Graphics)的原名称为”可移植性网络图像”,是网上接受的最新图像文件格式。PNG能够提供长度比GIF小30%的无损压缩图像文件。它同时提供 24位和48位真彩色图像支持...
  • python实现将深度学习应用于医学图像以辅助医疗

    万次阅读 多人点赞 2018-04-21 14:54:32
    转自fc013,仅做学习问题导读:1.怎样利用python处理图像?2.什么是卷积?3.什么是Keras? 运用深度学习技术进行图像和视频分析,并将它们用于自动驾驶汽车、无人机等多种应用场景中已成为研究前沿。近期诸如《A ...
  • .实验目的: 理解计算机图像分类的基本原理,掌握数字图像非监督分类以及监督分类的具体方法和过程,以及两种分类方法的区别。 二.实验平台:ERDAS IMAGINE 9.1 三.实验要求:掌握非监督分类;非监督分类结果...
  • 数字图像处理第五章——几何变换与图像配准

    千次阅读 多人点赞 2019-04-21 20:27:44
    数字图像处理第五章数字图像处理---几何变换与图像标准()点变换(二)仿射变换(三)投影变换(四)应用于图像的几何变换(五)MATLAB 中的图像坐标系统5.1 输出图像位置5.2 控制输出网格(六)图像内插6.1 二维...
  • MATLAB图像拼接算法及实现

    千次阅读 2021-08-31 11:52:53
    论文关键词:图像拼接 图像配准 图像融合 全景图 论文摘要:图像拼接(image mosaic)技术是将组相互间重叠部分的图像序列进行空间匹配对准,经重采样合成后形成幅包含各图像序列信息的宽视角场景的、完整的、...
  • pmp每日

    万次阅读 2019-12-25 10:26:47
    2019.12.25 每日题: You are a project manager of a company and your project is currently in execution phase.The customer has requested you for additional work. This work will affect the budget, but ...
  • 图像纹理特征总体简述

    千次阅读 2018-11-07 00:35:25
    纹理是种反映图像中同质现象的视觉特征,它体现了物体表面的具有缓慢变化或者周期性变化的表面结构组织排列属性。纹理具有三大标志: 某种局部序列性不断重复; 非随机排列; 纹理区域内大致为均匀的统一体; ...
  • OpenCV中图像特征提取与描述

    千次阅读 2022-03-08 20:12:13
    目录图像特征提取与描述图像的特征Harris和Shi-Tomas算法Harris角点检测Shi-Tomasi角点检测小结SIFT/SURF算法SIFT原理基本流程尺度空间极值检测关键点定位关键点方向确定关键点描述SURF原理小结Fast和ORB算法Fast...
  • 2、 下列关于路径的描述不正确的是( )。 路径可以画笔工具进行描边 当对路径进行填充颜色的时候,路径不可以创建镂空的效果 路径可以随时转化为浮动的选区 路径调板中路径的名称可以随时修改 3、 "..
  • A、显示器是计算机的种输入设备 B、显示器必须要有相应的显示卡才能工作 C、显示器可以独立工作 D、显示器的尺寸大小决定了它的亮度的高低 7、财政、金融、会计等事务处理软件属于( )。 A、系统软件 B、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,631
精华内容 7,852
关键字:

下列用以显示一系列图像的是