MATLAB图像处理(二):图像转二值图

这篇具有很好参考价值的文章主要介绍了MATLAB图像处理(二):图像转二值图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、定义

二值图即黑白图,图中只有黑白色之分。图像的二维矩阵只由0和1构成,0表黑色,1表白色。

二值化利于图像进一步处理,且数据量减小,易于凸显出目标轮廓。

具体定义可以参考如下链接:

http://zhidao.baidu.com/question/89536354.html

二、原理

首先对有256个亮度等级的灰度图像进行阈值选取(设定一个阈值),当灰度图某个像素数值大于此阈值时,将此像素变成白色,小于此阈值则变成黑色。

三、代码实现

可以由RGBD  D,都要首先进行灰度图的转化(灰度图转化见主页)。

3.1 im2bw函数

OTSU:最大类间方差法,或大津法。按图像灰度特性,将图像分成背景和目标两部分。首先使用 graythresh 函数确定一个阈值,当然也可以自己确定一个阈值,再用 im2bw 函数转换为二值图。

I = imread('keyan.jfif');   %读取到一张图片   
subplot(221)
imshow(I) % 显示原图
title('原图');

Ih = rgb2gray(I); % RGB图像转化成灰度图像
subplot(222)
imshow(Ih) % 显示灰度图
title('灰度图');

thresh1 = graythresh(I); % 针对原图自动确定二值化阈值,阈值越大图像越黑,越小越白
I21 = im2bw(I,thresh1); % 对图像直接进行二值化
% I21 = im2bw(I,value); % 自己设定阈值,value=[0,1]中间的任何数值
subplot(223)
imshow(I21)  % 显示二值化之后的图片
title('RGB图像转化为二值化图像')

thresh2 = graythresh(Ih); % 针对灰度图自动确定二值化阈值
I22 = im2bw(Ih,thresh2);
% I22 = im2bw(Ih,value); % 自己设定阈值,value=[0,1]中间的任何数值
subplot(224)
imshow(I22);
title('灰度图像转化为二值化图像')

自动确定阈值的前提时,结果为:

MATLAB图像处理(二):图像转二值图

可见在自动确定阈值的情况下,RGB图像直接转化为二值图 和 先转化为灰度图再转化为二值图的情况,得到的二值化结果会有区别。

观察是因为针对RGB图和针对灰度图自动确定的阈值不一样:

>> thresh1
thresh1 =
    0.5529
>> thresh2
thresh2 =
    0.6235

而如果自己指定一样的阈值,则二值化结果完全一致。

3.2 histeq函数

此函数需要工具箱 Image Processing Toolbox.

I = imread('keyan.jfif');   %读取到一张图片   
subplot(221)
imshow(I) % 显示原图
title('原图');

Ih = rgb2gray(I); % RGB图像转化成灰度图像
subplot(222)
imshow(Ih) % 显示灰度图
title('灰度图');

I21 = histeq(I,2);
subplot(223)
imshow(I21)

I22 = histeq(Ih,2); % 将图像灰度级数改为2,即二值图
subplot(224)
imshow(I22) % 显示二值图

结果:

MATLAB图像处理(二):图像转二值图

此法即量化图像(见MATLAB图像处理(一))。
注:图三是尝试直接对RGB图像使用 histeq 函数,没报错,但结果没有参考价值。事实上,histeq 函数的作用对象一般为灰度图像,matlab里帮助文档解释中指出 I 一般指灰度图像,如下:

>> help histeq
 histeq - 使用直方图均衡增强对比度
    此 MATLAB 函数 变换灰度图像 I,以使输出灰度图像 J 的直方图具有 64 个 bin 且大致平
    坦。

    J = histeq(I)
    J = histeq(I,n)
    J = histeq(I,hgram)

    newmap = histeq(X,map)
    newmap = histeq(X,map,hgram)

    [___,T] = histeq(___)

    输入参数
        I - 灰度图像
            数值数组
        hgram - 目标直方图
            数值向量
        n - 离散灰度级的数量
            64 (默认值) | 正整数
        X - 索引图像
            数值数组
        map - 颜色图
            c×3 数值矩阵

    输出参数
        J - 变换后的灰度图像
            数值数组
        T - 灰度变换
            数值向量
        newmap - 变换后的颜色图
            n×3 数值矩阵

3.3 imbinarize函数

新版本的MATLAB中不建议使用 im2bw 函数,而是改用 imbinarize 函数。

I = imread('keyan.jfif');   %读取原图

Ih = rgb2gray(I); % RGB图像转化成灰度图像
subplot(121)
imshow(Ih) % 显示灰度图
title('灰度图');

I2 = imbinarize(Ih);
subplot(122)
imshow(I2) % 显示二值图
title('二值图');

二值化结果如下:

MATLAB图像处理(二):图像转二值图

注:此函数只能用于灰度图,不能作用于个RGB图像。文章来源地址https://www.toymoban.com/news/detail-439783.html

到了这里,关于MATLAB图像处理(二):图像转二值图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (数字图像处理MATLAB+Python)第九章图像形态学运算-第三节:二值图像的形态学处理

    形态滤波 :是一种在数字图像处理中常用的图像处理技术,用于改善图像的质量、提取图像的特定特征或去除图像中的噪声。形态滤波主要基于形态学运算,通过结构元素(也称为模板)对图像进行局部区域的操作,从而改变图像的形状和结构。选择不同形状(如各向同性的

    2024年02月08日
    浏览(59)
  • opencv-图像处理基础-二值图像

    1.二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中,通过一个栅格状排列的数据集(矩阵)来表示和处理图像。例如,图 2-1 是 一个字母 A 的图像,计算机在处理该图像时,会首先将其划分为一个个的小方块,每一个小方 块就是一个独立的处理单位

    2024年02月15日
    浏览(54)
  • [2] 图像处理之----二值化处理

    简单阈值是选取一个全局阈值,然后把整幅图像分成非黑即白的二值图像,灰度值大于阈值就赋为255反之为0。 ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINAR) 返回值一: 阈值,(Otsu‘s二值化会用到) 返回值二: 处理以后的图像 参数一: 初始图像 参数二:我们自己设定的阈

    2024年02月05日
    浏览(54)
  • OpenCV图像处理----图像的二值化

    图像二值化( Image Binarization) 就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 二值化的原理 OpenCV提供的图像二值化API threshold()方法参数: 图片矩阵 阈值 图片中的最大值 二值化的方式 二值化的方式: THRESH_BINARY 高于阈值改为

    2024年02月12日
    浏览(39)
  • 【OpenCV】 基础入门(二)图像基础概念 | 图像灰度化处理 | 图像二值化处理

      在计算机中用一般用 M x N 的矩阵来表示一幅尺寸大小为 M x N 的数字图像,矩阵元素的值就是该图像对应位置上的像素值。    对于计算机本地磁盘中的彩色图像,单机鼠标右键,选择“属性”,可以看到一幅图像的基本信息。 1、灰度图:   灰度图是每个像素只有一

    2024年04月14日
    浏览(47)
  • 基于opencv的c++图像处理(图像二值化)

    基于opencv的c++接口,实现常用的图像二值化方法,包括了最大类间方差法(OTSU)、固定化阈值以及自适应阈值。 该函数将固定级别的阈值应用于多通道阵列。该函数通常用于从灰度图像中获取双层(二进制)图像(#compare 也可用于此目的)或用于去除噪声,即过滤掉值过小

    2024年02月07日
    浏览(48)
  • python图像处理实战(二)—二值化图像与线性变换

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 前言         首先引入以下灰度变换的概念。      

    2024年02月07日
    浏览(47)
  • OpenCV常用功能——灰度处理和图像二值化处理

    1.1 cvtColor函数 函数原型: 功能 :转换图像颜色空间。 参数 : src: 输入图像。 code: 颜色空间转换代码。可以取常量cv2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY。 dst: 输出图像。 dstCn: 输出图像的通道数,如果设置为0,则跟随转换代码自动设置。 内置函数示例代码: 灰度处理的原理是将

    2024年02月08日
    浏览(59)
  • FPGA|数字图像处理实现口罩识别——二值化

    【写在前面】刚入门小菜鸟,记录一下口罩识别学习过程。参考文件和网址会在文末注明。有错误欢迎指出,也欢迎进行补充~ 原理图如下,二值化对应为红框里的部分 使用的二值化方法是 手动指定一个 阈值 ,通过阈值来进行二值化处理 。(还有一种方法是一个自适应阈值

    2023年04月11日
    浏览(46)
  • 图像处理:图片二值化学习,以及代码中如何实现

    目录 1、了解下图片二值化的含义 2、进行图像二值化处理的方法 3、如何选择合适的阈值进行二值化 4、实现图片二值化(代码) (1)是使用C++和OpenCV库实现: (2)纯C++代码实现,不要借助其他库 (3)图片处理的一个实例: 1、了解下图片二值化的含义 (1)图片二值化是

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包