💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🔊博主简介:985研究生,Matlab领域科研开发者;
🚅座右铭:行百里者,半于九十。
🏆代码获取方式:
CSDN Matlab武动乾坤—代码获取方式
更多Matlab图像处理仿真内容点击👇
①Matlab图像处理(进阶版)
⛳️关注CSDN Matlab武动乾坤,更多资源等你来!!
⛄一、一种基于直方图的实时自适应阈值分割方法简介
1 引言
在交通管理中,为了获得车辆的运动数据,需要对交通视频进行实时监测,从监测图像序列中检测出运动对象,并对运动对象进行分析处理,从而获得车辆和行人的运动数据。实时视频运动对象检测与跟踪是数字图像处理技术的一个主要部分,它是计算机视觉、目标识别与跟踪、安全监控等视频分析和处理的应用的关键技术。常用的视频运动目标检测算法主要有基于相邻帧差分的算法和基于背景图像和当前帧差分的算法。对于背景差法,其基本原理是将当前帧与背景图像进行差分来得到差图像,对得到的差图像还应作二值化处理,从而分割出运动目标。传统的目标分割方法主要包括:阈值法、边缘检测法和区域跟踪法等。其中阈值化方法由于计算简单、运算效率高,所以是图像分割的常用方法。
常用的二值化算法有,最大类间方差法,它是由大津(Otsu N.A)于1979年提出的,是基于整幅图像的统计特性,实现阈值的自动选取的。但是当目标和背景对比不明显即灰度相差不大或图像有噪声时,大津法 (Otsu) 的效果不理想。根据直方图进行分割,一般直方图呈现双峰形状,一个峰为背景,另一个峰对应目标,选择两峰之间的谷作为阈值T来进行分割,能得到较好结果,但是在光照和噪声影响下,不能形成双峰形状。另外对于差图像,其直方图呈现递减形状,而不是双峰形状,故其直方图自适应阈值的确定就不可能用到双峰谷底分割,针对这样的直方图提出了一种自适应阈值的方法,该方法主要思想为,将统计出的频率值从高到低排序,这样就形成了一条光滑递减的直方图曲线,将直方图最高点与最低点连接得到一条直线,然后取出直方图上的到该直线距离最大的点对应的灰度值作为阈值来进行二值化。该算法对每一个点计算距离时,计算量大,速度慢。鉴于此,本文提出了一种快速计算最大距离的方法,避免了大量的乘法运算。
2 一般自适应阈值法
在运动目标检测中,在用背景差方法获得差图像后,通过观察该图像直方图可以看出,直方图基本上是呈递减状态,如图 1 所示,为了保证直方图的递减,将该直方图频率排序,得到一组从高到低的频率,其直方图就绝对递减了,为了消除直方图锯齿,用高斯滤波进行平滑处理,下面就是寻找阈值,用以将图像分割成二值图。该算法步骤如下: (1)寻找直方图上的最高点和最低点,连接得到一条直线。
(2)在直方图上求每一点到该直线的距离。
(3)通过比较求出最大的一个距离,该距离对应的灰度值(横坐标)即为所求阈值T。
(4)用第三步求得的阈值T分割差图像,即:
⛄二、部分源代码
close all;
[F_name P_name]=uigetfile(‘*.jpg’,‘Open a jpg’); %文件打开对话框
H= strcat(P_name,F_name);
image_H = imread(H);
[row column] = size(image_H);
%设定三个阈值
set_T = {‘S_T1:’,‘S_T2:’,‘S_T3:’};%设置三个阈值
answer = inputdlg(set_T);%打开输入对话框
if isempty(answer)
return;
end
S_T1 = str2num(answer{1});
S_T2 = str2num(answer{2});
S_T3 = str2num(answer{3});
%original
figure;
imshow(image_H);
title(‘original’);
%S_T1
HH = zeros(row,column);
[r c] = find(image_H>S_T1);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T1)]);
%S_T2
HH = zeros(row,column);
[r c] = find(image_H>S_T2);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T2)]);
%S_T2
HH = zeros(row,column);
[r c] = find(image_H>S_T3);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T3)]);
%自适应阈值法
GrayLevelCount = 256;
image_HH = double(image_H);
histogram = imhist(image_H);
fg = histogram/(row*column);
mean_value = sum(sum(image_HH))/(row*column);
P = 0;
K_array = zeros(GrayLevelCount,1);
for GrayLevel = 1:GrayLevelCount %遍历灰度级
threshold_current = GrayLevel - 1;
P_out = sum(fg(1:threshold_current)); %前景outlook
P_back = 1 - P_out;%背景background
Mean_out = 0;
Mean_back = 0;
for i = 1:GrayLevelCount
j = i-1;
if i < threshold_current+1 %左侧取到阈值
Mean_out = Mean_out + j*fg(i);
else
Mean_back = Mean_back + j*fg(i);
end
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]左建军,吴有富.一种基于直方图的实时自适应阈值分割方法[J].毕节学院学报. 2014,32(04)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合