精华内容
下载资源
问答
  • 二值图像

    千次阅读 2014-12-24 14:57:14
    学习DIP第10天 转载请标明出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,...。。。。。。。...二值图像  内容迁移至  http://www.face2ai.com/DIP-3-0-二值图像/  http://www.tony4ai.com/DIP-3-0...

    学习DIP第10天

    转载请标明出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。。。。。。。。

    二值图像

        内容迁移至

     http://www.face2ai.com/DIP-3-0-二值图像/

     http://www.tony4ai.com/DIP-3-0-二值图像/

    展开全文
  • 二值图像腐蚀与膨胀操作样例

    万次阅读 多人点赞 2017-06-26 23:59:26
    目录 操作方法简要说明 腐蚀操作 结构元素原点在结构元素内部 原点在结构元素外部 二值图像的膨胀操作 点在结构元素内部 原点在结构元素外部

    申明: 仅个人小记

    前言: 我之前对腐蚀与膨胀的概念理解存在错误。我原来的概念解决不了结构的原点设置在结构外部的情况。故在这里记一下。

    小注: 刚开始操作的时候是同时有三张图,分别为原图像,结构元素图像,输出结果空白图像
    注意: 原图像只是提供位置信息,不参与输出图像的构成。

    ###一、操作方法简要说明

    • 腐蚀操作内容

      1. 先不管原点设置的位置,在原图中找出第一个和结构元素完全匹配的部分
      2. 想象着拿着结构元素往上面找到的位置上贴,这时得到结构元素中的原点(就是打上“+”的那个方块)对应着原图中一个方块
      3. 我们根据这个方块位置,在空白的输出图像上(第一次输出图像为空白的)相应的位置涂黑。
      4. 重复1~3,直至原图中所有能和结构元素完全匹配的情况用完
      5. 这是得到的输出图像便是结构元素对原图像进行腐蚀的结果
    • 膨胀操作内容

      1. 原图像结构元素原点的运行轨迹。
      2. 直接关注原点,想象着拿着结构元素,把结构元素的原点放在原图像上的第一个有效元素(指的是黑方块)。
      3. 这时,我们得到结构元素所有的黑色方块在原图像上位置。我们根据得到的位置,在的输出图像(第一次输出图像为空白的)上完全相同的位置涂黑。
      4. 重复1~3,得到输出结果图像,输出结果图像就是结构元素对原图像膨胀操作的结果。

    二、 二值图像的腐蚀操作

    ####1. 结构的原点设置在结构的内部情况举例

    • 20170626205111772
    图中左侧(a)为原图像,右侧(b)为结构元素。
    
    • 第一步 拿结构元素第一次完全匹配原图(右侧为输出图像)

    •   20170626213145105       20170626214649655

    • 第二步 然后我们根据原点在原图像中的位置,在输出图像上完全对应的位置上涂黑,即输出图像更变为
      20170626235339626

    • 第三步 在原图中寻找下一个完全和结构元素匹配部分,即
      20170626235532993

    • 第四步 根据此刻结构元素的原点在原图像上的位置,在输出图像相同的位置上涂黑,即

    20170626220202505
    • 第五步 寻找完毕,操作完毕。
      ####2. 结构的原点设置在结构的外部情况举例

    • 20170626222330365

    左侧为原图,右侧为结构元素,注意,这里的结构元素的原点不在结构元素内部。

    • 第一步 拿结构元素第一次完全匹配原图(右侧为输出图像)
      20170626222929934

    • 第二步 根据结构元素的原点在原图中的位置,我们再输出图像相应的位置涂黑,即
      20170626223228124

    • 第三步 在原图中寻找下一个完全和结构元素匹配部分,即
      20170626223819164

    • 第四步 根据此刻结构元素的原点在原图像上的位置,在输出图像相同的位置上涂黑,即
      20170626223918868

    • 第五步 寻找完毕,操作完毕。

    ###三、 二值图像的膨胀操作

    ####1. 结构的原点设置在结构的内部情况举例

    • 20170626205111772 图中左侧(a)为原图像,右侧(b)为结构元素

    操作规则,拿结构元素的原点在原图像上的黑色方块上一次一次移动。

    • 第一步 将结构元素的原点,放置在原图向上的第一个黑色方块上,即
      20170626224932823
      (左侧为原图像,右侧为输出图像)

    • 第二步 根据此时结构元素在原图上霸占的所有位置,我们在输出图的相应所有位置涂黑,即
      20170626225330780

    • 第三步 将结构元素的原点移动到下一个原图上的黑色方块,即
      20170626225859889

    • 第四步 根据此时结构元素在原图上霸占的所有位置,我们在输出图的相应所有位置涂黑,即
      20170626230127567

    • 第五步 重复第三步和第四步,直到遍历完毕原图像中所有的黑色方块,我们得到最终输出结果

    20170626230607753

    ####2. 结构的原点设置在结构的外部情况举例

    • 20170626222330365

    左侧为原图,右侧为结构元素,注意,这里的结构元素的原点不在结构元素内部。

    • 第一步 将结构元素的原点,放置在原图向上的第一个黑色方块上,即
      20170626234422889
      由于位置不够,我在上边界上拓展了一行。

    • 第二步 根据此时结构元素在原图上霸占的所有位置,我们在输出图的相应所有位置涂黑,即
      20170626231823654

    • 第三步 将结构元素的原点移动到下一个原图上的黑色方块,即
      20170626233200431

    • 第四步 根据此时结构元素在原图上霸占的所有位置,我们在输出图的相应所有位置涂黑,即
      20170626232552521

    • 第五步 重复第三步和第四步,直到遍历完毕原图像中所有的黑色方块,我们得到最终输出结果

    20170626234008923

    By Jack Lu 2017-6-26 23:57:35

    四、其他的一些概念

    1. 平移不变性(shift-nonvariant): 指的就是不论平行移动到哪里执行的操作都是一样。和执行的动作和操作是无关系的。
    2. 腐蚀和膨胀操作还可以对灰度图进行操作,具体方式:
    • 灰度图腐蚀
      用原图减去结构,选用结果中的最小值(如果有负值,则以0为最小值)作为本次输出值放置在空白图像相应的输出位置(即结构的原点位置在原图上相应的位置)。

    • 灰度图膨胀
      用原图加上结构,选用结果中的最大值 (如果有负值,则以0为最小值)作为本次输出值放置在空白图像相应的输出位置(即结构的原点位置在原图上相应的位置)。

    3 开闭运算

    • 开运算为: 先腐蚀再膨胀

    • 闭运算为: 先膨胀再腐蚀

    • 开闭运算具有幂等性。即做n次开运算和做一次开运算的结果相同,闭运算同样如此。

    • 个人方便记忆开闭运算的操作顺序,这样理解,开运算是打开的意思,即可以理解为将图像中靠近但不相连的地方索性打开。做一次开运算,使得原来的缝隙变大。
      闭运算可以理解为闭合的意思,能合并在一起的地方尽量合并。即可以理解为把图像中缝隙填满。

    20200721090139815.jpg
    谢谢支持!我的邮箱: officeforcsdn@163.com
    展开全文
  • 8位二值图像转化为1位二值图像

    千次阅读 2016-03-15 21:30:41
    1位二值图像而同样的bmp格式二值图像,也可以在存储时,每位只占用1个bit的空间,这样格式的二值图像占用的总存储空间约等于8位二值图像的1/8(由于文件头的大小基本不变,当图像较大时,占用存储基本是

    8位二值图像转化为1位二值图像

    • 本文以bmp图像格式为例对如何将8位二值图像转换为1位二值图像进行说明

    8位二值图像

    对于普通的bmp格式二值图像,其每个像素存储为8位(即每个像素占一个字节存储空间)。

    1位二值图像

    而同样的bmp格式二值图像,也可以在存储时,每位只占用1个bit的空间,这样格式的二值图像占用的总存储空间约等于8位二值图像的1/8(由于文件头的大小基本不变,当图像较大时,占用存储基本是8倍)。

    8位二值图像与1位二值图像的转换

    由于8位bmp格式二值图像与1位bmp二值图像,不能通过简单的修改文件头格式实现转化,因此需要利用写文件的格式,将bmp文件当成无格式的字节序列,此时,我们可以按照相应的文件头格式及图像数据逐字节写入二值图像的内容,实现8位bmp格式二值图像与1位bmp格式二值图像的转换。

    废话不多说,以下是我在VS中调试通过的代码,请各位看官批评指点。
    

    C++代码如下(VS中调试通过)


    #include "stdafx.h"
    #include <stdio.h> 
    #include <stdlib.h>
    #include "cv.h"
    #include "highgui.h"
    #include "cvaux.h"
    
    typedef  struct  tagBITMAPFILEHEADER
    { 
        unsigned short int  bfType;       //位图文件的类型,必须为BM 
        unsigned long       bfSize;       //文件大小,以字节为单位
        unsigned short int  bfReserverd1; //位图文件保留字,必须为0 
        unsigned short int  bfReserverd2; //位图文件保留字,必须为0 
        unsigned long       bfbfOffBits;  //位图文件头到数据的偏移量,以字节为单位
    }BITMAPFILEHEADER; 
    typedef  struct  tagBITMAPINFOHEADER 
    { 
        long biSize;                        //该结构大小,字节为单位
        long  biWidth;                     //图形宽度以象素为单位
        long  biHeight;                     //图形高度以象素为单位
        short int  biPlanes;               //目标设备的级别,必须为1 
        short int  biBitcount;             //颜色深度,每个象素所需要的位数
        short int  biCompression;        //位图的压缩类型
        long  biSizeImage;              //位图的大小,以字节为单位
        long  biXPelsPermeter;       //位图水平分辨率,每米像素数
        long  biYPelsPermeter;       //位图垂直分辨率,每米像素数
        long  biClrUsed;            //位图实际使用的颜色表中的颜色数
        long  biClrImportant;       //位图显示过程中重要的颜色数
    }BITMAPINFOHEADER; 
    typedef  struct 
    { 
        BITMAPFILEHEADER  file; //文件信息区
        BITMAPINFOHEADER  info; //图象信息区
    }bmp;
    
    void writebmpfile() 
    { 
        bmp  m = {0};        //定义一个位图结构
        FILE *fp;
    
        IplImage * temp = cvLoadImage("BMP_binary.bmp",0);
    
        fopen_s(&fp,"BMP_binary_bit.bmp","wb+");
        if (NULL == fp)
        {
            printf("can't open the bmp imgae.\n");
            exit(0);
        }
    
        int widthStep = 0;
        widthStep = ((temp->width + 31) / 32) * 4;
    
        //写入文件头
        m.file.bfType = 0X4D42;
    
        m.file.bfSize = widthStep*temp->height + 62;       //文件大小,数据大小+文件头大小
        m.file.bfReserverd1 = 0;
        m.file.bfReserverd2 = 0;
        m.file.bfbfOffBits = 62;
    
        //写入信息头
        m.info.biSize = 40;
        m.info.biWidth = temp->width;
        m.info.biHeight = temp->height;
        m.info.biPlanes = 1;
        m.info.biBitcount = 1;
        m.info.biCompression = 0;
        m.info.biSizeImage = widthStep*temp->height;
        m.info.biXPelsPermeter = 0;
        m.info.biClrUsed = 0;
        m.info.biClrImportant = 0;
    
        fseek(fp,0,SEEK_SET);
    
        fwrite(&(m.file.bfType),sizeof(m.file.bfType),1,fp);
        fseek(fp,2,SEEK_SET);
        fwrite(&(m.file.bfSize),sizeof(m)-2,1,fp);
    
        //54-62共八个字节表示调色板信息
        uchar Palette[8] = {0,0,0,0,255,255,255,0};//
        fseek(fp,54,SEEK_SET);
        fwrite(Palette,sizeof(uchar),8,fp);
    
    
        uchar* data = new uchar[widthStep*temp->height];
        memset(data,0,widthStep*temp->height);
    
        //单色位图,1表示白色,0表示黑色,结果图背景为白(1),线条为黑(0)
        for(int i = 0; i < temp->height; i++)
        {
            for(int j = 0; j < widthStep; j++)
            {
                uchar temp_data = 0;
                for(int k = 0; k < 8; k++)
                {
                    if(j*8 + k < temp->width)
                    {
                        int temp_value = 0;
                        if((uchar)temp->imageData[(temp->height-1-i)*temp->widthStep+j*8+k] == 255)
                        {
                            temp_value = 1 << (7-k);
                            temp_data += temp_value;
                        }
                    }
                }
                data[i*widthStep+j] = temp_data;
            }
        }
        fseek(fp,62,SEEK_SET);
        fwrite(data,sizeof(uchar),widthStep*temp->height,fp);
        fclose(fp);
    }
    
    int main()
    {
        writebmpfile();
        return 0;
    }

    相关链接

    www.cnblogs.com/kingmoon/archive/2011/04/18/2020097.html

    blog.csdn.net/o_sun_o/article/details/8351037

    目录

    展开全文
  • 图像处理(2)--二值图像

    千次阅读 2019-07-13 11:55:57
    二值图像(Binary Image) 是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素...

    1.定义

    二值图像(Binary Image) 是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。
    二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素灰度值不是0就是255,再无其他过渡的灰度值。

    2. 应用

    二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。
    一般二值化图像的应用领域在车牌识别,图像的字符提取。

    参考链接:https://baike.baidu.com/item/二值图像/5166431?fr=aladdin
    图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809

    展开全文
  • 二值图像、灰度图像、彩色图像

    万次阅读 多人点赞 2018-03-31 12:53:17
    ____tz_zs二值图像二值图像(Binary Image),按名字来理解只有两个值,0和1,0代表黑,1代表白,或者说0表示背景,而1表示前景。其保存也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个像素看成随机...
  • 二值图像信息隐藏

    千次阅读 2014-02-12 14:23:50
    二值图像信息隐藏的方法是把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0,如果白色像素的个数大于一半,则表示嵌入1,但是当需要嵌入的比特与所选区域的黑白像素的比例...
  • RGB图像,索引图像,二值图像,灰度图像之间的转换。 % 将索引图像转换为其他图像时,需要提供 % 索引图像的数据和调色板 % 将其他图像转换为索引图像时,需要设置 % 数据和调色板 % 其他类型图像转换为...
  • 二值图像孔洞填充

    万次阅读 2017-10-04 17:14:21
    二值图像的孔洞填充 二值图像的孔洞填充是基于图像形态学操作的基本运算,本文参考数字图像处理(冈萨雷斯著)相关章节的有关内容并结合作者自己的思考,给出了基于C# 二值图像孔洞填充的可行程序。 基础知识:参考...
  • matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种...
  •  函数功能: 对二值图像进行数学形态学(Mathematical Morphology)运算。  语法格式:  BW2 = bwmorph(BW,operation)  对二值图像进行指定的形态学处理。  BW2 = bwmorph(BW,operation,n)  对...
  • 一、二值图像 二值图像(Binary Image),是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,只有两个值,0和1,0代表黑,1代表白。保存方式也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个...
  • 灰度图像转化为二值图像的matlab实现 据说写博客就可以获得10积分,我试试。 灰度图像转化为二值图像的matlab实现 I=imread(‘C:\Users\Administrator\Desktop/5.bmp’); I2=im2bw(I,0.45);%对图像自动二值化 imshow...
  • 二值图像(黑白图像):每个像素点只有两种可能,0和1.0代表黑色,1代表白色。数据类型通常为1个二进制位。 索引图像:类似于查字典,为了解决彩色图像消耗空间大的问题,一般应用于色彩构成比较简单的场景...
  • 图像分割(计算二值图像面积)

    千次阅读 2020-11-04 16:17:48
    图像分割(计算二值图像面积) 由灰度直方图确定阈值后,采用人工阈值分割方法分割参照物,然后采用Ostu分割法二次分割图像,目的是将目标图像完全提取出来,再使用开运算方法去噪平滑,得到最终的二值图像。 A = ...
  • 二值图像快速细化算法

    万次阅读 2017-01-15 20:49:20
    二值图像的细化是讨论将一个图像中的黑色部分沿着它的中心轴线将其细化为一个像素宽的线条的处理过程,细化的结果能基本保留图形中黑色部分的拓扑结构。图像细化是图像模式识别的关键步骤。快速细化算法的思想是优化...
  • 二值图像的噪点去除算法

    千次阅读 2020-03-26 18:15:01
    二值图像的噪点去除算法二值图像的噪点去除算法噪音样例如何处理处理结果其他说明 二值图像的噪点去除算法 众所周知,二值图(前景黑色,背景白色) 由于低熵特性,能玩的花样很少, 很多图像处理算法难以实施在二值图...
  • %读入图像,并转换为double型,该计算针对的是二值图像,所以加入图像时需注意 %膨胀测试图像 I=im2double(imread('D:\Gray Files\9-14.tif')); %获得图像大小 [M,N]=size(I); %存放膨胀后的图像 J=zeros(M,N); %===...
  • 二值图像封闭区域内部填充算法,基于泛红填充实现。
  • 在matlab平台下,为了得到二值图像,先是用函数im2bw将彩色图像转换成二值图像,然后用imwrite函数生成指定路径的二值图像。 这里用到的例子是将彩色图像(64×64×3 uint8型图像数组)转换成二值图像(64×64 ...
  • 二值图像(黑白图像):每个像素点只有两种可能,0和1.0代表黑色,1代表白色。数据类型通常为1个二进制位。 索引图像:类似于查字典,为了解决彩色图像消耗空间大的问题,一般应用于色彩构成比较简单的场景
  • Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域 Matlab中可以使用graythresh(Img)函数设置二值化的阈值,再用im2bw转化为二值图像。在Matlab中,可以使用bwlabel()和bwlabeln()函数来...
  • Matlab 二值图像label regions

    千次阅读 2016-10-20 09:28:36
    Matlab提供了现成的函数,可以快速实现二值图像的闭合区域标记,这里介绍三种常见情形。
  • 彩色图像与二值图像(mask)点乘

    千次阅读 2017-09-30 12:42:00
    问题描述:给出一幅彩色图像和一张mask二值图像,其中mask和彩色图像大小相同,感兴趣的部分为1,其余部分为0,请用mask与彩色图像点乘,将感兴趣区域显示出来。 点乘的本质是mask中是二值图像,感兴趣部分像素值为...
  • 二值图像的骨架提取

    千次阅读 2017-06-10 22:09:45
    本文介绍的二值图像细化算法是来自 T.Y. Zhang and C.Y. Suen 1984 年发表的论文 “A fast parallel algorithm for thinning digital patterns” 中所介绍的算法。
  • 何为行程压缩呢?...行程压缩对二值图像的压缩非常有效 close all;clear all;clc; % matlab 行程编解码 二值图像 I1 = imread('lena.jpg'); I2 = I1(:); I2length = length(I2); I3 = im2bw(I1,0.5); %将原...
  • MATLAB中将图像转换为二值图像im2bw

    万次阅读 多人点赞 2017-09-06 14:39:51
    在MATLAB中将图像转换为二值图像,主要运用im2bw函数,涉及到一个灰度门槛的数值。 对于灰度图像 bw=im2bw(I,level); level空着的话,默认是0.5。level一般使用graythresh函数来计算,至于graythresh函数中运用到...
  • 我想将二值图像里的边缘线(线段或一系列相互连接的线段)抽取出来,放到数组或什么数据结构里面,后面再继续进行处理。也是要根据二值图像里的点去拟合吗?有没有相关的文章推荐,中英文都可以!~~
  • 数字图像处理工具箱函数包括以下15类:、⑴、图像显示函数;⑵、图像文件输入、输出...MATLAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四
  • 参考文章1:数字图像处理基础:教你如何区分单色图像、灰度图像、伪彩色图像、真彩色...参考文章2:二值图像:B&W(黑白图像)、 Gray (灰度图像) 、单色图像;Color(彩色图像) 参考文章3:伪彩色图像处理方法 ...

空空如也

空空如也

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

二值图像