【图像检测】基于计算机视觉实现红外图像的人体特征信息检测Matlab源码

1 简介

基于计算机视觉实现红外图像的人体特征信息检测Matlab源码​

2 完整代码

    clc;    [filename,pathname]=uigetfile({'*.jpg'},'choose the picture');    str=[pathname, filename];    m=imread(str);    Input_Image=m(3:end-3,3:end-3);       [h, g]=imhist(Input_Image);    % h 为像素个数,g 为灰度级    ff=double(Input_Image);   %/选择感兴趣区域具体程序段///    [M, N]=size(Input_Image);  %%%%%%%%%%%%%%%%%%%%%%%%%%//输入300,得到初始阈值tg    tg=1;for a=1:255    if (h(a)>300)&&(h(a+1)<300)          if tg<a             tg=a;          end    endend%%%%%%%%%%%%%%%%%%%%//查找[tg,tg+10]之间的最小值,确定阈值tgsign=1000;for a=tg:tg+10    if h(a)<sign       sign=h(a);       tg=a;           endend  %根据所确定的全局阈值将原图像变成二值图像  X=zeros(M,N);  for i=1:M      for j=1:N          if Input_Image(i,j)>=tg              X(i,j)=1;          else              X(i,j)=0;          end      end  end  X=X~=0;  %标记连接成分(8邻域)  [LX ,XNum]=bwlabeln(X,8);  size(LX);  %以伪彩色的形式显示标记图像  RGBX=label2rgb(LX,@jet,'k');   %/   %寻找最大区域作为参考区域  [r1,c1]=find(LX==1);  [a,b]=size(r1);  MaxRegion=a;  Max_Region_flag=1;  Max_Region_r=r1;  Max_Region_c=c1;  for i=2:XNum      [r,c] = find(LX == i);      [a,b]=size(r);      if a>MaxRegion          MaxRegion=a;          Max_Region_flag=i;          Max_Region_r=r;          Max_Region_c=c;      end  end  %确定参考区域的四个顶点坐标 rmin=min(min(Max_Region_r)); rmax=max(max(Max_Region_r)); cmin=min(min(Max_Region_c)); cmax=max(max(Max_Region_c));  %确定参考区域的行数和列数  Ref_row=rmax-rmin+1;  Ref_column=cmax-cmin+1;  %将参考区域图像赋给一个新的图像矩阵Ref_Image  Ref_Image=zeros(M,N);  for i=1:M      for j=1:N          if(i>rmin &&i<rmax &&j>cmin &&j<cmax)          Ref_Image(i,j)=Input_Image(i,j);          else          Ref_Image(i,j)=0;          end      end  end  %确定参考区域的宽和高  Ref_Height=rmax-rmin+1;  Ref_Width=cmax-cmin+1;  %确定感兴趣区域的宽和高以及四个顶点的坐标  ROI_Height=0.7*Ref_Height;  ROI_Width=0.3*Ref_Width;  ROIminr=rmin-ROI_Height;  ROImaxr=rmax+ROI_Height;  ROIminc=cmin-ROI_Width;  ROImaxc=cmax+ROI_Width;  %转换为整数  ROImaxr=round(ROImaxr);  ROIminr=round(ROIminr);  ROImaxc=round(ROImaxc);  ROIminc=round(ROIminc);  %处理边界问题  if ROIminr<0       ROIminr=1;  end  if ROImaxr>M      ROImaxr=M;  end  if ROIminc<0      ROIminc=1;  end  if ROImaxc>N      ROImaxc=N;  end  %将感兴趣区域图像赋给一个新的图像矩阵ROI_Image  ROI_Image=zeros(M,N);  for i=1:M      for j=1:N          if(i>ROIminr&&i<ROImaxr&&j>ROIminc&&j<ROImaxc)          ROI_Image(i,j)=Input_Image(i,j);          else          ROI_Image(i,j)=0;          end      end  end  %显示感兴趣区域图像  ww=uint8(ROI_Image);  x=mean2(ww);  fx1=8.5094e-06*x^3-0.0022*x^2+0.1726*x+1.4361;  fx2=5.0918e-07*x^4-1.9187e-04*x^3+0.0241*x^2-1.1363*x+91.6610;  fx3=-2.01e-5*x^3 + 0.00838*x^2-0.924*x+102.0;  fx4=1.08e-4*x^3-0.024*x^2+1.45*x+108.0;  fx5=0.2185*sin(1.44*x-4.866)+0.3676*sin(2.801*x-19.42)+0.2096*sin(2.38*x-12.42)+0.1813*sin(4.144*x+28.31)+0.3283*sin(2.472*x-7.916)+0.386*sin(1.977*x+4.266)+0.2477*sin(3.806*x+23.12)+0.1104*sin(0.739*x+8.16)+36.5;  gx1='mmol/L';  gx2='次/min';  gx3='mmHg';  gx4='度';  fprintf('你的血糖是%6.2f',fx1);  fprintf('%s  ',gx1);  if fx1>6      a='你的血糖偏高';  elseif (4<fx1)&&fx1<6      a='你的血糖正常';  else       a='你的血糖偏低';  end  fprintf('%s\n',a);  fprintf('你的心率是%5.0f',fx2);  fprintf('%s\n',gx2);  fprintf('你的血压是%6.0f-',fx3)  fprintf('%6.0f',fx4);  fprintf('%s\n',gx3);  fprintf('你的体温是%6.1f',fx5);  fprintf('%s\n',gx4);

3 仿真结果

【图像检测】基于计算机视觉实现红外图像的人体特征信息检测Matlab源码

4 参考文献

[1]单巍等。”基于深度卷积神经网络的红外图像行人检测.” 激光与红外 50.5(2020):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

一些理论参考了网络文学。如有侵权,请联系博主删除。

版权声明:本文为博主Matlab科研工作室原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_59747472/article/details/123159786

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月1日 下午8:03
下一篇 2022年3月1日 下午8:15

相关推荐