Matlab图像序列中的运动目标检测与跟踪

对图像定位,边缘检测、图像增强对视频中的某个物体进行跟踪:比如说是飞机,导弹等~
附件中的Matlab代码


  1. clc;
  2. clear;
  3. % close all;
  4. %%%%%%%%%%%%%%% 读序列图像 %%%%%%%%%%%
  5. location = 'D:\ex7\';%文件夹位置
  6. count=2; %图像帧数
  7. % aviFileName = 'images2AVI.avi';
  8. aviObj =avifile('image1.avi');
  9. % aviObj =avifile('example.avi');
  10. %figHandle = figure;
  11. % 多帧循环开始
  12. for i=1:count
  13. I_origin = imread([location num2str(i) '.bmp']);
  14. I= I_origin;
  15. k=1;J2=512;J3=0;I1=0;
  16. %%%%%%%%%%%%%%%%%%%% 对比度增强 %%%%%%%%%%%%%%%%%%%
  17. T=197;%手动选阈值
  18. i;
  19. III=size(I);
  20. for i=1:III(1)
  21. % size(I)
  22. n=0; flag=0;
  23. for j=1:512
  24. if I(i,j) >T
  25. I(i,j)=255;
  26. else 
  27. if k==1 % k demostrate number 
  28. n=n+1;
  29. if n>15 
  30. I1=i;
  31. J1=j;
  32. k=k+1;n=0;
  33. end 
  34. end
  35. if k==2
  36. n=n+1; 
  37. if n>15
  38. if J1>j&J2>j
  39. I2=i;
  40. J2=j;
  41. J3=J2+70;
  42. end
  43. % if J1<j&J3<j
  44. % J3=j; 
  45. % end
  46. I4=i;J4=j; 
  47. n=0; 
  48. end 
  49. end
  50. % if I(i,j)<50&k==3
  51. % n=n+1; 
  52. % if n>3

  53. % I4=i;J4=j;
  54. % n=0;
  55. % end
  56. % end
  57. I(i,j)=0; 
  58. n=n+1;
  59. end
  60. end
  61. end
  62. J33=J3-8;
  63. J22=J2-25;
  64. for j1=J22:J33
  65. I(I1-8,j1)=0; 
  66. I(I4+8,j1)=0; 
  67. end
  68. for i1=(I1-8):(I4+8)
  69. I(i1,J22)=0; 
  70. I(i1,J33)=0; 
  71. end
  72. %%%%%%%%%%%%%%%%%%%% 图像边缘检测 %%%%%%%%%%%%%%%%%%%%%
  73. BW3 = edge(I,'canny');
  74. figure,imshow(BW3);
  75. frame_grayImage = im2uint8(BW3); 
  76. aviObj = addframe(aviObj,frame_grayImage );
  77. % hold on;
  78. % imshow(BW3);
  79. % h = getframe(figHandle);
  80. % aviObj = addframe(aviObj,h );
  81. end % 多帧循环结束
  82. %close(figHandle);
  83. aviObj=close(aviObj);
  84. %%%%%%%%%%%%%%%%% SAVE %%%%%%%%%%%%
复制代码
刚开始一帧

 

最后一帧

猜你喜欢

转载自blog.csdn.net/u012374012/article/details/45696841