精华内容
下载资源
问答
  • 数字图像处理之开操作和闭操作

    万次阅读 2018-04-21 15:45:00
    1.理解并掌握形态学图像处理中的开操作和闭操作 2.熟悉并掌握MATLAB软件的使用 实验环境 操作系统:Windows 10 软件:MATLAB R2014a 相关知识 1.定义 开操作:使图像的轮廓变得光滑,断开较窄的狭颈...

    实验目的

    1.理解并掌握形态学图像处理中的开操作和闭操作
    2.熟悉并掌握MATLAB软件的使用

    实验环境

    操作系统:Windows 10
    软件:MATLAB R2014a

    相关知识

    1.定义

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

    AB=(AB)B

    含义:先用B对A进行腐蚀,然后用B对结果进行膨胀。
    闭操作:同样使图像的轮廓变得光滑,但与开操作相反,它能弥合狭窄的间断和细长的沟壑,消除小的孔洞,并填补轮廓线中的裂痕。
    使用结构元B对集合A进行闭操作,定义为:

    AB=(AB)B

    含义:先用B对A进行膨胀,然后用B对结果进行腐蚀。

    2.几何解释

    (1)开操作的何解释
    A○B的边界由B中的点建立
    当B在A的边界内侧滚动时,B所能到达的A的边界的最远点。


    (2)闭操作的几何解释
    A•B的边界由B中的点建立
    B在A的边界外侧滚动
    满足〖(B)〗_z⋂A≠”Ø” 的所有点的集合

    3.相关函数说明

    (1)strel
    功能:形态学结构元素。
    用法:
    SE = STREL('arbitrary',NHOOD,HEIGHT) 创建一个指定领域的非平面结构化元素。HEIGHT是一个矩阵,大小和NHOOD相同,他指定了NHOOD中任何非零元素的高度值。
    SE = STREL('ball',R,H,N) 创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。R必须为非负整数,H是一个实数。N必须为一个非负偶数。当N>0时此球形结构元素由一系列空间线段结构元素来近似。
    SE = STREL('diamond',R) 创建一个指定大小R平面钻石形状的结构化元素。R是从结构化元素原点到其点的距离,必须为非负整数。
    SE = STREL('disk',R,N) 创建一个指定半径R的平面圆盘形的结构元素。这里R必须是非负整数. N须是0, 4, 6, 8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。N可以被忽略,此时缺省值是4。注: 形态学操作在N>0情况下要快于N=0的情形。
    如:se1 = strel('square',11) % 11乘以11的正方形
    (2)imeroad
    腐蚀图像
    用法:IM2 = imerode(IM,SE)
    腐蚀灰度、二进制或压缩二进制图像 IM ,返回腐蚀图像 IM2 。参数 SE 是函数 strel 返回的一个结构元素体或是结构元素体阵列。
    (3)imdilate
    膨胀图像
    用法:IM2 = imdilate(IM, SE)
    膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。

    实验内容

    先开操作再闭操作,组成形态学滤波器。
    a 图是受噪声污染的指纹的二值图像,噪声为黑色背景上的亮元素和亮指纹部分的暗元素
    b图是使用的结构元
    c图是使用结构元素对图a腐蚀的结果:背景噪声消除了,指纹中的噪声尺寸增加
    d图是使用结构元素对图c膨胀的结果:包含于指纹中的噪声分量的尺寸被减小或被完全消除,带来的问题是:在指纹纹路间产生了新的间断
    e图是对图d膨胀的结果,图d的大部分间断被恢复,但指纹的线路变粗了
    f图是对图e腐蚀的结果,即对图d中开操作的闭操作。最后结果消除了噪声斑点
    缺点:指纹线路还是有断点,可以通过加入限制性条件解决。

    实验结果

    总结

    通过本次实验,我基本掌握了开操作和闭操作的理论知识和matlab实现方法,同时体会到了数字图像处理的强大功能,在我们生活的方方面面都有着广泛的应用。学习理论知识第一步,还需要用编程软件去实现,再进一步是应用到现实生活中,再进阶一步就是提出新的理论。
    总之,这次实践让我收获颇多,最后衷心感谢老师的细致讲解,她严谨的学风和认真的态度给我打开了数字图像处理领域的大门。

    附录

    matlab程序

    A=imread('Fig0911(a)(noisy_fingerprint).tif'); %注意图片的路径要设置正确
    subplot(2,3,1);
    imshow(A)
    title('噪声图像')
    se=strel('square',3);
    A2=imerode(A,se);
    subplot(2,3,2);
    imshow(A2)
    title('腐蚀后的图像')
    A3=imopen(A,se);
    subplot(2,3,3);
    imshow(A3)
    title('A的开操作')
    A4=imdilate(A3,se);
    subplot(2,3,4);
    imshow(A4)
    title('开操作的膨胀')
    A5=imclose(A3,se);
    subplot(2,3,5);
    imshow(A5)
    title('开操作的闭操作')
    展开全文
  • 开操作:去除小的干扰块闭操作:填充闭合区域相当于膨胀腐蚀的组合# 核的大小形状kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))# 开操作ret = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, ...

    开操作:去除小的干扰块

    闭操作:填充闭合区域

    相当于膨胀和腐蚀的组合

    # 核的大小和形状

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))

    # 开操作

    ret = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, iterations=5)

    # 闭操作

    ret = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel, iterations=5)

    开操作

    964dd8ffa41fc0d61917ede7e4c6fe6c.png

    闭操作

    2a1ca193f871ba341ae035cbf32a8144.png

    import cv2 as cv

    import numpy as np

    img = cv.imread("tooth.png")

    cv.imshow('img', img)

    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    cv.imshow('gray', gray)

    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)

    cv.imshow('bin', binary)

    # 核的大小和形状

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))

    # 开操作

    ret = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, iterations=5)

    # 闭操作

    ret = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel, iterations=5)

    cv.imshow('ret', ret)

    cv.waitKey(0)

    设置核形状,可提取直线

    052c42ea4d87976c1d6934d03aee02c8.png

    6f79108c7c95cc0b86fcb6ab664e4479.png

    0222260aa5cf3d6c9f75673e3ff10fed.png

    import cv2 as cv

    import numpy as np

    img = cv.imread("tooth.png")

    img = cv.imread("line.jpg")

    cv.imshow('img', img)

    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    cv.imshow('gray', gray)

    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)

    cv.imshow('bin', binary)

    # 核的大小和形状

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 1))

    # 开操作

    ret = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, iterations=5)

    # 闭操作

    # ret = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel, iterations=5)

    cv.imshow('ret', ret)

    cv.waitKey(0)

    转载至链接:https://my.oschina.net/ahaoboy/blog/1922052

    展开全文
  • Opencv之开操作和闭操作

    千次阅读 2018-08-24 17:14:37
    一、开操作闭操作 二、morphologyEX 三、代码   一、开操作闭操作 用于对二值化后的图像进行处理,属于形态学操作(morphology) 开操作:消除白色的小点,去除小的干扰块 闭操作:消除黑色的小块,...

    目录

    一、开操作、闭操作

    二、morphologyEX

    三、代码


     

    一、开操作、闭操作

    用于对二值化后的图像进行处理,属于形态学操作(morphology)

    开操作:消除白色的小点,去除小的干扰块

    闭操作:消除黑色的小块,填充闭合区域

     

    二、morphologyEX

    cv2.morphologyEX(

    1. img  输入图像
    2. cv2.MORPH_CLOSE,cv2.MORPH_OPEN  形态学操作
    3. kernel  

    其中kernel,用

    cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

    获得

     

    三、代码

    import cv2 as cv
    import numpy as np
    
    img = cv.imread("tooth.png")
    cv.imshow('img', img)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv.imshow('gray', gray)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow('bin', binary)
    # 核的大小和形状
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    # 开操作
    ret1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, iterations=5)
    # 闭操作
    ret2 = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel, iterations=5)
    cv.imshow('ret1', ret1)
    cv.imshow('ret2', ret2)
    cv.waitKey(0)

     

    展开全文
  • clc; clear all; close all; %灰度膨胀、腐蚀、开操作、闭操作测试图像 ...%========================灰度开操作和闭操作================================ %半径为3的磁盘(disk)结构元素 r=3;...
    clc;
    clear all;
    close all;
    %灰度膨胀、腐蚀、开操作、闭操作测试图像
    I=im2double(imread('D:\Gray Files\9-37.tif'));
        
    %========================灰度开操作和闭操作================================        
    %半径为3的磁盘(disk)结构元素 
    r=3;
    B=ones(2*r-1,2*r-1);
    %将距离大于40的点置零
    for i=1:2*r-1
        for j=1:2*r-1
            d=sqrt((i-r)^2+(j-r)^2);
            if d>r
                B(i,j)=0;
            end
        end
    end
    n=2*r-1;
    ind=find(B==0);
    n_l=floor(n/2);
    I_pad=padarray(I,[n_l,n_l],'symmetric');
    [M,N]=size(I);
    
    %-------------------------------灰度开操作---------------------------------
    J_Opening=zeros(M,N);
    %腐蚀操作
    J_Erosion=zeros(M,N);
    for i=1:M
        for j=1:N
            %获得图像子块区域
            Block=I_pad(i:i+2*n_l,j:j+2*n_l);
            C=Block.*B;
            %删除0值,保留4连通数值
            C=C(:);
            C(ind)=[];
            J_Erosion(i,j)=min(C);
        end
    end
    %对腐蚀图像进行扩展
    J_Erosion_pad=padarray(J_Erosion,[n_l,n_l],'symmetric');
    %膨胀图像
    for i=1:M
        for j=1:N
            %获得图像子块区域
            Block=J_Erosion_pad(i:i+2*n_l,j:j+2*n_l);
            C=Block.*B;
            %删除0值,保留4连通数值
            C=C(:);
            C(ind)=[];
            J_Opening(i,j)=max(C);
        end
    end
    %-------------------------------灰度闭操作---------------------------------
    J_Closing=zeros(M,N);  
    %膨胀图像
    J_Dilation=zeros(M,N);
    for i=1:M
        for j=1:N
            %获得图像子块区域
            Block=I_pad(i:i+2*n_l,j:j+2*n_l);
            C=Block.*B;
            %删除0值,保留4连通数值
            C=C(:);
            C(ind)=[];
            J_Dilation(i,j)=max(C);
        end
    end
    %对膨胀图像进行扩展
    J_Dilation_pad=padarray(J_Dilation,[n_l,n_l],'symmetric');
    %腐蚀操作
    for i=1:M
        for j=1:N
            %获得图像子块区域
            Block=J_Dilation_pad(i:i+2*n_l,j:j+2*n_l);
            C=Block.*B;
            %删除0值,保留4连通数值
            C=C(:);
            C(ind)=[];
            J_Closing(i,j)=min(C);
        end
    end
    
    subplot(131)
    imshow(I)
    subplot(132)
    imshow(J_Opening)
    subplot(133)
    imshow(J_Closing)

     

    展开全文
  • 学习DIP第13天 ...。。。... 简单来说所谓开操作和闭操作就是把腐蚀和膨胀结合起来,先腐蚀后膨胀就是开,膨胀后腐蚀就是关,至于为什么是开为什么是关,我一开始也记不住,记得老师好像也没告诉...
  • 图像的开操作和闭操作

    千次阅读 2015-11-05 21:52:55
    1.开操作 定义:B对A进行的开操作就是先...2.闭操作: 定义:B对A进行的开操作就是先用B对A膨胀,然后用B对结果进行腐蚀。  表示 :A.B =(A⊕B)ΘB 含义:A。B 的边界通过B在A的边界内转动时,B中的点所能达到
  • opencv形态学-开操作和闭操作

    千次阅读 2019-05-21 17:00:47
    开操作-open 先腐蚀后膨胀
  • 开操作       开操作简单说就是先腐蚀再膨胀即: A∘B=(A⊖B)⊕BA \circ B = (A \ominus B) \oplus BA∘B=(A⊖B)⊕B 开操作一般会平滑物体的轮廓、断开狭窄的狭颈并消除突出物。       开操作...
  • 返回用于形态操作的指定大小形状的结构元素。 函数形式: C++: Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1)) 参数说明:     shape - 元素形状可以是下列之一:       ...
  • 小记:静默处之,安之若素 opencv中膨胀腐蚀 膨胀 腐蚀 示例程序 详细介绍
  • 1.OpenCV-4.0.0 基本图像阈值操作 待处理原图 /** * OpenCV-4.0.0 基本图像阈值操作 */ public static void threshold(){ Mat src= Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\...
  • %============================开操作和闭操作================================ %-----------------------------开操作过程----------------------------------- %结构元素 n=3; B=ones(n,n); n_B=length(find(B==1...
  • 一、开操作 代码如下: #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace cv; int main(int argc, char** argv) { Mat src, dst; s...
  • 介绍图像形态学中的几个基本操作:腐蚀、膨胀、开操作闭操作。  1.腐蚀  结构A被结构B腐蚀的定义为,  A⨀B={z|(B)z⊆A} 可以理解为,移动结构B,如果结构B与结构A的交集完全属于结构A的区域内,则保存该...
  • 首先要选择模板:选择模板有三个要素: 1> 形状 2> 锚点 3> 尺寸大小 接下来提到的领域表示以锚点为中心,模板内所有的点 假设二值图像的像素值为0 (黑色) 255(白色), 其中白色为前景,...闭操作:先做膨
  • 开操作闭操作

    千次阅读 2018-10-06 19:10:39
    开操作和闭操作实际就是腐蚀和膨胀的一个组合运算,如下: 开操作:A∘B=(A⊖B)⊕BA\circ B=(A\ominus B)\oplus BA∘B=(A⊖B)⊕B 闭操作:A∙B=(A⊕B)⊖BA\bullet B=(A\oplus B)\ominus BA∙B=(A⊕B)⊖B 开操作:...
  • 开闭操作

    2021-01-25 15:21:25
    开操作 : 先腐蚀后膨胀的操作称之为开操作。它具有消除细小物体,在纤细处分离物体平滑较大物体边界的作用。 闭操作 : 先膨胀后腐蚀的操作称之为闭操作。它具有填充物体内细小空洞,连接邻近物体平滑边界的作用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,042
精华内容 416
关键字:

开操作和闭操作