转自:http://download.csdn.net/detail/hupeng810/1511870
function imagBW = kittlerMet(imag)
% KITTLERMET binarizes a gray scale image 'imag' into a binary image
% Input:
% imag: the gray scale image, with black foreground(0), and white
% background(255).
% Output:
% imagBW: the binary image of the gray scale image 'imag', with kittler's
% minimum error thresholding algorithm.
% Reference:
% J. Kittler and J. Illingworth. Minimum Error Thresholding. Pattern
% Recognition. 1986. 19(1):41-47
MAXD = 100000;
imag = imag(:,:,1);
[counts, x] = imhist(imag); % counts are the histogram. x is the intensity level.
GradeI = length(x); % the resolusion of the intensity. i.e. 256 for uint8.
J_t = zeros(GradeI, 1); % criterion function
prob = counts ./ sum(counts); % Probability distribution
meanT = x' * prob; % Total mean level of the picture
% Initialization
w0 = prob(1); % Probability of the first class
miuK = 0; % First-order cumulative moments of the histogram up to the kth level.
J_t(1) = MAXD;
n = GradeI-1;
for i = 1 : n
w0 = w0 + prob(i+1);
miuK = miuK + i * prob(i+1); % first-order cumulative moment
if (w0 < eps) || (w0 > 1-eps)
J_t(i+1) = MAXD; % T = i
else
miu1 = miuK / w0;
miu2 = (meanT-miuK) / (1-w0);
var1 = (((0 : i)'-miu1).^2)' * prob(1 : i+1);
var1 = var1 / w0; % variance
var2 = (((i+1 : n)'-miu2).^2)' * prob(i+2 : n+1);
var2 = var2 / (1-w0);
if var1 > eps && var2 > eps % in case of var1=0 or var2 =0
J_t(i+1) = 1+w0 * log(var1)+(1-w0) * log(var2)-2*w0*log(w0)-2*(1-w0)*log(1-w0);
else
J_t(i+1) = MAXD;
end
end
end
minJ = min(J_t);
index = find(J_t == minJ);
th = mean(index);
th = (th-1)/n
imagBW = im2bw(imag, th);
% figure, imshow(imagBW), title('kittler binary');
分享到:
相关推荐
使用MATLAB实现的图像二值化处理算法,有Otsu全局二值化算法,kittler 最小分类错误(minimum error thresholding)全局二值化算法,niblack局部二值化算法。
常用的几个图像二值化算法,包括全局的二值化和局部的二值化算法
常用的全局二值法和局部二值法算法存在细节丢失、噪声引入、运算时间过长等弊端。...通过MATLAB仿真,与常用二值化算法进行比较,验证提出的多窗口图像二值化算法具有处理简单、运算速度快、鲁棒性较好等优点。
otsu.m : 类判别分类法(otsu全局二值化算法) four_neighbor.m : 四邻域法边界抽取 eight_neighbor.m : 八邻域法边界抽取 globe_graph.m : 全局检测法边界抽取 area_peri.m : 目标区域周长计算主函数,调用ostu ...
MATLAB图像处理专栏--边缘检测算法,包含灰度化图像,二值化图像,局部阈值,最大类间方差法。保证源代码的运行,GUI界面更加便于对比原图与效果图以及保存。
1地图:使用的是实际地图二值化之后作为全局规划的地图,同时在二值图片上添加的有任意多个移动障碍物,随着机器人的运行实时移动 2机器人:支持定义速度阈值和旋转阈值来控制运动过程 3移动障碍物,支持任意形状,...
该文件为图像处理实验的matlab代码,针对阈值分割的部分,程序也是较为简单,不会涉及太多复杂的计算
基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择全局直方图均衡化,Retinex算法,同态滤波,通过对比处理前后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经整明...
可以直接运行的matlab程序,这两个方法分别为全局阈值方法以及局部阈值方法,值得去看看原理。我想免费下载,可是好像不行链接:https://pan.baidu.com/s/1rL2wGj3_qdl2fkkQmcVfIg 密码:lu4z
传统的BP网络既然是一个非线性优化问题,这就不可避免地存在局部极小问题,网络的极值通过沿局部改善的方向一小步进行修正,力图达到使误差函数最小化的全局解,但实际上常得到的使局部最优点。 管理毕业论文网...
使用相同的阈值对第二张图像进行了二值化,并展示了二值化后的结果。最后,计算了类别平均像素准确率(MAP)和交并比(IoU),以评估分割结果的准确性。 图像转换为一维数组,并使用k均值聚类算法将像素分成两类k...
此函数实现了基于迭代随机搜索的最小化算法。 在每次迭代中,函数都会将搜索区域中的向量随机化,并找到使目标函数最小化的向量。 然后,进行较小的搜索区域是围绕这个最小化定义的。 该过程重复进行,缩小搜索区域...
MATLAB智能算法的源代码%% 清空环境 clc;clear %% 障碍物数据 position = load('barrier.txt'); plot([0,200],[0,200],'.'); hold on B = load('barrier.txt'); xlabel('km','fontsize',12) ylabel('km','fontsize'...
matlab求导代码全局Nelder-Mead方法 该存储库包含实现本文所述算法的MATLAB / Octave函数gbnm : 由Marco A.Luersen和Rodolphe Le Riche 计算机与结构》(计算机与结构)82.23(2004)第2251-2260页。 顾名思义,这...
首先,算法通过提取正负训练样本的规范化二进制梯度特征,用该特征训练级联SVM分类器得到行人似物检测模型;然后,由该模型获取图像中初始行人候选区域,后进一步利用尺寸调节和聚类算法优化初始候选窗口区域;最后...
img2bw是一个简单的命令行应用程序来二值化图像。 要求 Python3.7 以上 安装 pip install img2bw 用法 要对单个图像进行二值化,请键入: img2bw image.jpg --method otsu 要将目录中的所有图像二值化,请键入: img...
该算法基于DW1000芯片和三边定位算法,采用双边双向测距方法测距,以求解二元二次方程最优解为目标,设定优化目标函数,将坐标二维化处理,降低了算法的复杂度;筛除测量过程中产生的无效数据,确定有效搜索区域并在...
这是基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择全局直方图均衡化,Retinex算法,同态滤波,通过对比处理前后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经...
1. 实验一最优值全为22,是全局最优,最优路径 4-5-6-1。 2. 实验二2个22,2个25; 3. 实验三全为25,均为局部最优,局部最优路径 4-5-6-2-1。 讨论: - 位于节点6时,接下来应该选择节点1还是节点2受到信息素和...
它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉” 和“变异” 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其...