图像阈值分割matlab,图像阈值分割Matlab版 | 学步园
图像阈值分割是一个非常简单的
而现在遇到的阈值分割却需要完成如下的多个功能:
1、基本的阈值分割:
大于阈值,则认为是目标;小于,则认为是背景
2、像素值较低才被认为是目标,即要把不等号反向
对图像像素点,小于阈值,认为是目标;大于阈值,则认为是背景。
3、可能进行阈值分割的图像只是标记图像
对标记图像进行分割后,需要在原始的图像上对分割的目标区域进行展示
这就需要输入原始图像
原始图像可能是灰度图像,也有可能是彩色图像
4、多个阈值进行分割
输出每个阈值进行分割的结果
花费了两个小时,完成了单阈值分割完成了功能1、2、3;本来将功能4也整合进来了,但感觉如此一来,代码太过费解,并且有一定的代码冗余,因此将其分离成一个单独的函数,通过调用单阈值分割实现。
功能 2 的实现: 增加一个偏置 标记 bias
若为1,则表示正常情况,大于阈值,则认为是目标
为-1时,则反之。
进行比较时用:bias*image>bias*thresh 对两种情况通用
% 对标记图像进行阈值分割
%
% 标记图像里像素值大于Thresh,则认为时病斑,否则认为是非病斑
%
% 输入:
% image 进行阈值分割的图像
% thresh 分割的阈值
% bias 分割的偏置,默认为1
% bias=+1大于阈值为1,小于阈值为0
% bias=-1大于阈值为0,小于阈值为1
% bgImage 背景图像,image上标识为目标的区域被保留,而标识为背景的则删除
% 默认为进行阈值分割的图像,即image
%
% 输出:
% labBinaryImage 标识病斑图像、二值图像
% labSrcImage 在背景图像上作标记,标识病斑区域
%
%[labBinaryImage,labSrcImage]=ThreshSegement(image,thresh);
%[labBinaryImage,labSrcImage]=ThreshSegement(image,thresh,bias);
%[labBinaryImage,labSrcImage]=ThreshSegement(image,thresh,bias,bgimage);
%
%2007-11-08
%
function[labBinaryImage,labSrcImage]=ThreshSegement(image,thresh,varargin)
iptchecknargin(2,4,nargin,mfilename);% 检测输入参数数量
iptcheckinput(image,{'numeric'},{'2d','real','nonsparse'},mfilename,'image',1);
iptcheckinput(thresh,{'numeric'},{'row','nonempty','real'},mfilename,'thresh',2);
thresh=thresh(1);% 只取第一个阈值
bias=1;% 偏置,默认为1
if(nargin>2) % 指定偏置
bias=varargin{1};
end
if(bias~=1) % 偏置只允许取值1和-1
bias=-1;
end
image=double(image);% 类型转换
iptcheckinput(bias,{'numeric'},{'row','nonempty','integer'},mfilename,'bias',3);
if(nargin>3) % 显示的背景图像
bgImage=varargin{2};
if( (size(bgImage,1)~=size(image,1))||(size(bgImage,2)~=size(image,2)) )
error('背景图像大小需与分割图像完全一致。');
end
else
bgImage=image;% 默认为进行阈值分割的图像image
end
iptcheckinput(bgImage,{'numeric'},{'real','nonsparse'},mfilename,'bgImage',4);
% 阈值分割,生成两幅标记图像
labBinaryImage=zeros(size(image));% 在二值图像上标识病斑区域
labBinaryImage(find(bias*image>=bias*thresh))=1;
if ( nargout>1) % 输出背景图像上标识病斑区域
for cur=1:size(bgImage,3) % 对每个平面均进行标记,灰度图像与彩色图像均可
curLabSrcImage=bgImage(:,:,cur);
curLabSrcImage(find(bias*image
labSrcImage(:,:,cur)=curLabSrcImage;
end
end
但也还存在一个问题,就是边界情况。即 bias*image=bias*thresh 的像素点的类别。bias取不同值其归类规则略有差别。比如归类规则:bias*image>bias*thresh,bias=1时表示大于阈值则认为是目标像素;bias=-1则小于等于阈值认为是目标像素。两者差一个等号。不能做到一致。
图像阈值分割matlab,图像阈值分割Matlab版 | 学步园相关推荐
- matlab如何进对图像进行透视变换,在Matlab中实现透视变换的方法 | 学步园
透视变换在两幅图像中进行对应非常有用,看下面的两幅图 第一幅图是源图像,图中有五个点,分别是四个顶点和中间的一个点(对应目标图中的中心点) 第二幅图是目标图,包括与源图像中的五个点对应的五个点 下面就 ...
- matlab cdf,Matlab 简单计算PDF和CDF | 学步园
通信的魅力就是在于随机性中蕴含的确定性,这也就是为什么你随便拿出一本通信方面的教材,前面几章都会大篇幅的讲解随机过程,随机过程也是研究生必须深入了解的一门课,特别是对于信号处理以及通信专业的学生. 在 ...
- matlab中fval函数,收集整理Matlab中的linprog函数使用说明 | 学步园
linprog函数是用来求解线性规划问题,其中,f,x,b,beq,lb,ub为向量,A,Aeq为矩阵. a).x=linprog(f,A,b) 功能:求解最小化问题:min f*x,条件:A*x≤ ...
- matlab knn,MATLAB K近邻算法 — knnsearch() 函数 | 学步园
K近邻 IDX = knnsearch(X,Y) finds the nearest neighbor in X for each point in Y. X is an MX-by-N matrix ...
- matlab人工选择阈值进行分割,基于MATLAB的图像阈值分割算法的研究
[摘要]:图像分割是一种重要的数字图像处理技术.本文首先介绍了图像分割技术,其次总结了目前图像分割技术中所用到的阈值.边缘检测.区域提取等方法以及分水岭算法.针对各种阈值分割算法,本文在最后做了详细的 ...
- MATLAB图像融合分割系统
摘 要 图像分割是一种重要的图像分析技术.对图像分割的研究一直是图像技术研究中的热点和焦点.图像分割是一个很关键的图像分析技术,是由图像处理进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分 ...
- 【车牌识别】基于matlab GUI阈值分割车牌识别(带面板)【含Matlab源码 721期】
⛄一.车牌识别简介 1 车牌图像处理 车牌图像处理主要有五个组成部分:图像灰度化.图像二值化.图像边缘检测.图像形态学运算和图像滤波处理.它是车牌识别系统中最根本且最基础的操作,车牌图像处理的好坏情况 ...
- 道路分割 matlab,MATLAB图像的道路分割技术研究
摘要:道路分割是基于图像分割的一种技术,并且它是一项非常重要的在数字图像处理中,首先要说的就是图像分析,它在计算机视觉中属于最基本的部分,图像理解是它最重要的一部分,在多个领域中也是一个十分重要和苦难 ...
- matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...
已知一副RGB图像中的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figur ...
最新文章
- FPGA 核和FPGA Fabric的区别是什么?
- Bluetooth Low Energy 嗅探
- MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
- android studio 入门比较好的书籍
- oracle里的AUE是什么意思,oracle 创建表空间步骤代码
- 关键词是用分号还是逗号隔开_逗号、顿号、分号、冒号、破折号的用法
- 【声传播】——多层介质平面波的反射问题
- ktv app html,ktv.html
- windows phone 7 学习笔记 五 TileSample
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(二)
- Win8.1部署 .NET Framework 3.5 安装方式汇总
- 自制力才是你努力的第一步
- python中sticky_position: sticky 详解(防坑指南)
- 网络编程--探讨一些边界条件
- 如何解决 Critical dependency: the request of a dependency is an expression ?
- matlab笔记:一元微分方程求解
- 一个游戏策划的八年回忆录
- js常见面试题及简单回答
- 什么是代码?code?
- 正则表达式?:代表什么意思
热门文章
- 服务器未下载不明文件 怎么还会中毒
- Ceph 创建/删除存储池、设置存储池副本数
- Kettle使用中的20个常见问题
- php libevent 问题,PHP Socket 初探 —— 硬着头皮继续 libevent(二)
- python的web应用框架_python应用webpy框架
- Ubuntu单系统重装windows10系统
- buu-[CISCN2019 总决赛 Day2 Web1]Easyweb
- 无法定位序数9828于动态链接库或者exe
- Ralink SDK NVRAM和WIFI配置的关系
- 在计算机系统中 控制和管理各种资源,操作系统试题2