首页 > 化工知识 > 【图像检测】基于直方图实现火灾检测matlab代码

【图像检测】基于直方图实现火灾检测matlab代码

时间:2021-12-04 来源: 浏览:

【图像检测】基于直方图实现火灾检测matlab代码

原创 天天Matlab 天天Matlab
天天Matlab

TT_Matlab

每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183

收录于话题 #图像处理matlab源码 273个 内容

1 简介

直方图是表达一副图像灰度级分布情况的关于统计信息的灰度级函数。它反映了灰 度级与出现这种灰度的概率间的对应关系,其横坐标是灰度级,纵坐标是该灰度级出现 的频度。对于高对比度图像的直方图,其灰度级的分布范围宽且较均匀,而对比度低的 图像,其直方图分布区间窄且集中于灰度级的某一部分,因此直方图可以表征图像的一 些重要特征信息。直方图均衡化处理是空域处理技术的基础。它是通过灰度值的累积函 数把原图像的直方图变成均匀分布的直方图,即把相对集中的灰度级分布进行扩展,通 过增加像素灰度级分布的动态范围,使对比度得到增加 [76] ,达到增强图像整体对比度的 效果。a

2 部分代码

clear all ; close all ; clc ; img = double ( imread ( ’flame2.jpg’ )); imshow ( img ,[]); [ m n ]= size ( img ); img = sqrt ( img );       %伽马校正 % HOG特征提取 %下面是求边缘 fy =[ -1 0 1 ];         %定义竖直模板 fx = fy ;             %定义水平模板 Iy = imfilter ( img , fy , ’replicate’ );     %竖直边缘 Ix = imfilter ( img , fx , ’replicate’ );     %水平边缘 Ied = sqrt ( Ix .^ 2 + Iy .^ 2 );               %边缘强度 Iphase = Iy ./ Ix ;               %边缘斜率,有些为inf,-inf,nan,其中nan需要再处理一下 %下面是求cell step = 16 ;                 %step*step个像素作为一个单元 orient = 9 ;               %方向直方图的方向个数 jiao = 360 / orient ;         %每个方向包含的角度数 Cell = cell ( 1 , 1 );               %所有的角度直方图,cell是可以动态增加的,所以先设了一个 ii = 1 ;                       jj = 1 ; for i = 1 : step : m           %如果处理的m/step不是整数,最好是i=1:step:m-step     ii = 1 ;     for j = 1 : step : n       %注释同上         tmpx = Ix ( i : i + step -1 , j : j + step -1 );         tmped = Ied ( i : i + step -1 , j : j + step -1 );         tmped = tmped / sum ( sum ( tmped ));         %局部边缘强度归一化         tmpphase = Iphase ( i : i + step -1 , j : j + step -1 );         Hist = zeros ( 1 , orient );               %当前step*step像素块统计角度直方图,就是cell         for p = 1 : step             for q = 1 : step                 if isnan ( tmpphase ( p , q )) == 1   %0/0会得到nan,如果像素是nan,重设为0                     tmpphase ( p , q )= 0 ;                 end                 ang = atan ( tmpphase ( p , q ));     %atan求的是[-90 90]度之间                 ang = mod ( ang * 180 / pi , 360 );     %全部变正,-90变270                 if tmpx ( p , q ) < 0               %根据x方向确定真正的角度                     if ang < 90               %如果是第一象限                         ang = ang +180 ;         %移到第三象限                     end                     if ang > 270               %如果是第四象限                         ang = ang -180 ;         %移到第二象限                     end                 end                 ang = ang +0.0000001 ;           %防止ang为0                 Hist ( ceil ( ang / jiao ))= Hist ( ceil ( ang / jiao )) + tmped ( p , q );   %ceil向上取整,使用边缘强度加权             end         end         Hist = Hist / sum ( Hist );     %方向直方图归一化         Cell { ii , jj }= Hist ;       %放入Cell中         ii = ii +1 ;                 %针对Cell的y坐标循环变量     end     jj = jj +1 ;                     %针对Cell的x坐标循环变量 end %下面是求feature,2*2个cell合成一个block,没有显式的求block [ m n ]= size ( Cell ); feature = cell ( 1 ,( m -1 ) * ( n -1 )); for i = 1 : m -1   for j = 1 : n -1                   f =[];         f =[ f Cell { i , j }(:) Cell { i , j +1 }(:) Cell { i +1 , j }(:) Cell { i +1 , j +1 }(:) ];         feature {( i -1 ) * ( n -1 ) + j }= f ;   end end %到此结束,feature即为所求 %下面是为了显示而写的 l = length ( feature ); f =[]; for i = 1 : l     f =[ f ; feature { i }(:) ];   end figure mesh ( f )

3 仿真结果

4 参考文献

[1]赵丽娜, 徐常志, 叶俊健, 陈晓波, & 邓伟锋. (2020). 基于matlab的火灾视频探测技术. 工业技术创新, 7(3), 4.

天天Matlab

赞赏二维码 微信扫一扫赞赏作者 赞赏

已喜欢, 对作者说句悄悄话
最多40字,当前共

  人赞赏

1 / 3

长按二维码向我转账

赞赏二维码

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐