一、 问题描述

对一副图像进行二值化,ostu算法等

二、 求解思路

将图像利用imread和rgb2gary后转化为灰度图像,对于直接的二值化,可使用0.5作为阈值
大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.通过设定一个阈值将图像像素分为两类,两者的占比分别为p1,p2,两者的均值分别为m1,m2,全局均值为mG,其中

通过循环255个像素得到,使得式子

有最大值,此阈值可以直接使用matlab自带的graythesh算出。本文也尝试利用上文的公式求出使得式子最大的阈值

三. 程序代码

clear;
clc;
close all
x=imread('tupian.jpeg');
subplot(3,3,1)
imshow(x)
title('原图')
%% 利用im2bw直接阈值二值化
T = 0.5;
BW = im2bw(x,T);
subplot(3,3,2)
imshow(BW)
title('利用im2bw直接阈值二值化')
%% 手动阈值二值化
subplot(3,3,3)
f=x;
g=rgb2gray(f);
new_g=zeros(size(g));
new_g(g>125)=1;
imshow(new_g)
title('手动阈值二值化')
%% otsu算法
subplot(3,3,4)
T_otsu=graythresh(g);
p_otsu=im2bw(x,T_otsu);
imshow(p_otsu)
title('matlab自带otsu')
%% 手动otsu算法
subplot(3,3,5)
[row,col]=size(g);
[counts] = histogram(g);
num=counts.Values;
num=num/sum(num);
max=0;
kmax=0;
for i=2:size(num,2)p1=sum(num(1:i));p2=1-p1;sump1=0;sump2=0;for k=1:isump1=sump1+k*num(k);endfor k=i+1:size(num,2)sump2=sump2+k*num(k);endm1=1/p1*sump1;m2=1/p2*sump2;thetasq=p1*p2*(m1-m2).^2;if thetasq>maxmax=thetasq;kmax=i;end
end
kmax=(kmax-1)*255/size(num,2);
new_g1=zeros(size(g));
new_g1(g>kmax)=1;
imshow(new_g1)
title('手动阈值二值化')
disp('手动计算otsu阈值')
disp(kmax/255)
disp('matlab自带算法计算阈值')
disp(T_otsu)

四. 实验结果

如图所示分别为原图,使用函数im2bw直接二值化图像,手动利用阈值二值化图像以及利用matlab自带函数计算大津法(otsu)给出阈值对图像二值化和利用手写公式求出阈值对图像二值化

对于该种情况的图片,手动计算的阈值与matlab自带的算法计算的阈值几乎一致,在计算otsu阈值时,注意使用hist函数获得每个像素值所占的数量。

五、实验心得

直接对函数用二值化分割有时候会不太理想,利用otsu等算法给出的结果能得到更好的分割结果

[matlab数字图像处理10]对一副图像进行二值化,ostu算法等相关推荐

  1. 《图形图像处理》— 使用matlab对图像进行二值化和灰度化处理

    用matlab对图像进行二值化处理 >>m = imread('d:\image\logo.jpg'); >> imshow(n); >> n = graythre ...

  2. 【图像处理】——图像的二值化操作及阈值化操作(固定阈值法(全局阈值法——大津法OTSU和三角法TRIANGLE)和自适应阈值法(局部阈值法——均值和高斯法))

    目录 一.二值化的概念(实际上就是一个阈值化操作) 1.概念: 2.实现方法 3.常用方法 二.阈值类型 1.常见阈值类型(主要有五种类型) (1)公式描述 (2)图表描述 2.两种特殊的阈值算法(O ...

  3. matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...

    本博客主要记录我学习运用matlab进行一些基本的图像处理的一些笔记,如果有不当的地方,欢迎批评指正,一起学习,一起进步. 本篇是第一篇,只涉及到一些基本的操作,涉及到的知识点如下: 1.二值化 2. ...

  4. 【OpenCV图像处理】二、图像的二值化操作

    图像的逻辑运算就是将两幅图像的对应像素进行逻辑运算.逻辑运算主要包括 与(AND)或(OR)及补运算.要对灰度图像进行逻辑运算,就要首先对图像进行二值化处理. 二值化的公式如下: 我们对灰度图像进行二 ...

  5. 不均匀光照文本图像的二值化

    本文转载自:http://blog.csdn.net/u013162930/article/details/47755363 不均匀光照文本图像的二值化. 因为文本图像的背景是不均匀的,所以想先求出图 ...

  6. 多媒体实验 Visual Studio 图像显示与处理 对图像进行二值化、求边缘、增强等处理

    具体代码,图像处理结果,报告,请访问: 多媒体实验VisualStudio图像显示与处理对图像进行二值化.求边缘.增强等处理.zip-讲义文档类资源-CSDN文库 一.实验目的 1.掌握BMP文件格式 ...

  7. 图像的二值化和灰度化

                   图像的二值化是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果. 将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和 ...

  8. OTSU最大类间方差实现图像的二值化

    OTSU方法又叫做最大类间方差,自适应选择一个合理的阈值,根据此阈值将灰度图像转换为二值图像,例如在车牌识别过程中,将摄像头拍到的图像转化为一副灰度图像,在提取车牌的有效信息中就需要图像的二值化化. ...

  9. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果

    十三种基于直方图的图像全局二值化算法实现 1. 什么是基于直方图的图像全局二值化算法 2. 灰度平均值 3. 百分比阈值(P-Tile法) 3. 基于双峰的阈值 3.1 基于平均值的阈值 3.2 基于 ...

  10. python-opencv 图像阈值二值化

    本文讲解基于OpenCV-python的图像二值化API及浅显原理讲解 文章目录 一. 阈值 1. 简单阈值 2. 自适应阈值 二. 图像二值化 1. 全局图像二值化 2. 局部图像二值化 3. Ot ...

最新文章

  1. 理解Docker——深入引擎室
  2. 网络端口的分类和作用
  3. 不能使用 '';文件已在使用中。
  4. h.264 scanning process for transform coefficients
  5. JVM中锁优化,偏向锁、自旋锁、锁消除、锁膨胀
  6. mysql之 double write 浅析
  7. 异步加载js文件并执行js方法:实现异步处理网页的复杂效果
  8. 关于压缩工具 7z(7-zip) 的选项 -x(排除文件)的解读
  9. android安卓系统2.3 使用说明书,Android2.3操作界面
  10. uniapp 可视化开发_uniapp的简单安装流程使用教程
  11. python作业案例_作业解析-python bayesian案例
  12. (译)通过WebChannel/WebSockets与QML中的HTML交互
  13. linux导入通达oa数据库,将通达OA迁移到linux平台
  14. DRUID连接池:java.sql.SQLRecoverableException: 关闭的语句
  15. 架构思维成长系列教程(十)- 电商搜索引擎架构设计
  16. 【C语言】流程图符号及流程图
  17. Windows如何关闭自动更新
  18. java 夏令时标志_Java里面的夏令时 | 学步园
  19. layui多图片上传并限制上传的图片数量
  20. 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)

热门文章

  1. opencv学习十二(车牌识别)
  2. Eclipse安装中文语言包
  3. 计算机网络谢希仁第七版课后习题答案
  4. 前额单通道脑电睡眠分期算法设计
  5. 13M initrd .config ubuntu 4.15.18
  6. Java基础视频教程
  7. 十天学会单片机和c语言编程 ppt,十天学会单片机和C语言编程笔记1
  8. <算法导论>练习4.3
  9. Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Ro A. In Search of an Easy Proble
  10. 图论及其应用 2018年期末考试 答案总结