博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab函数im2bw_图像分割之阈值分割(matlab)(转载)
阅读量:4082 次
发布时间:2019-05-25

本文共 1415 字,大约阅读时间需要 4 分钟。

转载自:

matlab函数im2bw_图像分割之阈值分割matlab

2021-01-02 06:21:09 373

文章标签:

图像分割是一种重要的图像处理的技术。

对于数字图像,我们往往会对他们中的某一部分感兴趣,这些部分我们称为前景或者目标, 其余部分称为背景。为了识别和分析图像中的目标,我们需要把他们从图像中提取出来,在此基础上对图像进行进一步的处理和应用,图像分割就是为了实现这个过程。

ef2d323bddf07419419c5764e055048b.png一. 阈值分割法0 1 灰度阈值法分割

灰度阈值分割就是把图像灰度分成不同的等级,然后确定灰度,门阈值的方法。灰度阈值分割其实就是二值化处理,即:选择一个阈值,将图像转化为黑白二值图像,用于图像分割以及边缘提取。

显然,图像阈值化处理是一种阶梯函数,属于图像灰度级的非线性运算,该变换函数曲线如图所示。它的功能是由用户指定一个阈值, 如果图像中某个像素的灰度值大于该阈值,则将该像素的灰度值置为255,否则将其灰度值置为0。

08125a77620c1ea1e3581dfd7cf9e67b.png

输入一张图像,并用imhist函数显示他的直方图。

db5bebcaa49ae3c223ec634c8d96baa6.png

从理论上来讲,以直方图双峰之间的谷底处灰度值作为阈值进行图像的阈值化处理,即可将目标和背景分割开来。

下面对他们进行图像分割

运行-如下代码

f=imread('ll.png');f1=im2bw(f,91/255);f2=im2bw(f,140/255);f3=im2bw(f,120/255);f4=im2bw(f,56/255);subplot(2,2,1);imshow(f1);subplot(2,2,2);imshow(f2);subplot(2,2,3);imshow(f3);subplot(2,2,4);imshow(f4);

cbf35a65bc899adc55fd2bfd69931df1.png

可以看到,在图像分割的过程中,阈值不宜选的过大或者过小,都会大大影响分割的效果,所以,在使用阈值分割的过程中,阈值的选择很重要,但是使用直方图的方法不容易确定出合适的阈值,这时候我们就要使用科学的方法来确定,通常我们有以下几种方法来确定:

  • 最小误差阈值

  • 最大方差阈值

  • 最佳阈值法

  • 差别分析法

涉及科学计算的知识大家可以自行查阅资料掌握,下面我们重点讲述全局阈值法和局部阈值法分割。全局阈值法作为更先进的算法,可以直接算出阈值来,然后进行图像分割。

02 全局阈值分割

运行如下代码

I=imread('coins.png');  subplot(1,2,1);  imshow(I);  Level = graythresh(I);  %求取二值化的阈值  BW = im2bw(I, level);   %按阈值进行二值化  subplot(1,2,2);  imshow(BW);

8de0af7917b23c03dd131915596386c1.png

03 局部阈值分割

这里采用一张我自己用手机拍的图片为例,对它进行局部阈值处理

n = imread('renjiancihua.jpg');f=rgb2gray(n);T = graythresh(f);                          % 自动获取阈值T = T*255;                                  % 阈值在区间[0,1],需调整至[0,255]g = f<=T;subplot(1,2,1);imshow(f);title('原图像');subplot(1,2,2);imshow(g);title(['阈值处理,阈值为' num2str(T)]);

bce3ca910c292f879d6abe7b6dc95a48.png

 

你可能感兴趣的文章
乘法逆元
查看>>
STL源码分析----神奇的 list 的 sort 算法实现
查看>>
Linux下用math.h头文件
查看>>
Linux中用st_mode判断文件类型
查看>>
Ubuntu修改host遇到unable to resolve host
查看>>
路由选择算法
查看>>
Objective-C 基础入门(一)
查看>>
Objective-C 基础入门(三) 读写文件与回调
查看>>
C++ STL标准库与泛型编程(一)概述
查看>>
C++ STL标准库与泛型编程(四)Deque、Queue、Stack 深度探索
查看>>
C++ STL标准库 算法
查看>>
JVM内存模型_Minor GC笔记
查看>>
SpringCloud学习之PassCloud——(一)PassCloud源代码下载
查看>>
Linux下安装Python环境并部署NLP项目
查看>>
Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
查看>>
Nginx篇-Nginx配置动静分离
查看>>
缓存篇-Redis缓存失效以及解决方案
查看>>
缓存篇-使用Redis进行分布式锁应用
查看>>
缓存篇-Redisson的使用
查看>>
phpquery抓取网站内容简单介绍
查看>>