资源简介

本代码主要是基于HSV的阴影检测及消除,分别提取前景及背景图像,进行色彩空间转换。HSV空间类似人类感觉色彩的方式,可以更加准确地识别阴影,并保持在计算上简单。

资源截图

代码片段和文件信息

% “高速公路汽车阴影”视频的阴影去除的第一种方法
clc;
clear all;
close all;
% 打开视频文件对话框
h1=figure(‘toolbar‘‘none‘‘name‘‘Shadow Removal‘);  % 读取受损图像
[FileNamePathName]=uigetfile(  { ‘*.avi‘‘avi (*.avi)‘;‘*.*‘‘All Files (*.*)‘}‘Open video sequence‘  );
if isequal([FileNamePathName][00])
   return;
else
   pic_path=fullfile(PathNameFileName);
   mov=aviread(‘highwayII_raw.avi‘);
end

n=10;             % 读取视频帧数
s=1;               % 起始为1
e=n;               % 结束为n

for i=s:e  
    mov_gray(i).image=mov(i).cdata;       %mov_gray(i).image为第i帧图像
end                                     

[ihiwid]=size(mov_gray(1).image);       % 取得视频帧的大小

% 计算1到第n帧的各个像素的均值
for i=s:e
    u=mov_gray(i).image;
    h=u(:);
    t(i:)=h(:);
end
tmp=median(t);                            % 对t数组各列取均值                                     
mean=reshape(tmpihiwid);               % 将n帧均值图像恢复成h*w*d的图像矩阵得到背景
figureimshow(uint8(mean));title(‘背景图像‘);

fn=10;

ok=mean;
tmp(1:3)=0;
di=20;
th=ones(113)*di;                          % 预设阀值
diff=double(ok)-double(mov_gray(fn).image); % 计算第fn帧图像与背景的差值
diff1=abs(diff);
for ai=1:ih
    for bi=1:iw
        if abs(diff(aibi1:3))>=th(11:)
           ok(aibi1:3)=mov_gray(fn).image(aibi1:3);
        else
           ok(aibi1:3)=0;
           diff1(aibi1:3)=0;
        end
    end
end
figureimshow(uint8(ok));title(‘前景图像‘);

impixelinfo;

g=rgb2hsv(mean);                             % 将背景图像由RGB格式转为HSV格式
figureimshow(g);title(‘背景图像的hsv格式‘);
impixelinfo;
figureimtool(g);

g1=rgb2hsv(ok);                              % 将前景图像由RGB格式转为HSV格式
figureimshow(g1);title(‘前景图像的hsv格式‘);
impixelinfo;
figureimtool(g1);

% 阀值分割
for ci=1:ih
    for di=1:iw
        if  (g1(cidi3)./g(cidi3)>=0.4)...                                     %这个地方的阈值选取是手动的,根据经验得到!
            &&(g1(cidi3)./g(cidi3)<=0.5)...
            &&abs(g1(cidi2)-g(cidi2))<=0.2 && abs(g1(cidi1)-g(cidi1))<=0.2;   
            h1(cidi1:3)=1;
        else
            h1(cidi1:3)=0;
        end
    end
end
h=hsv2rgb(h1);
figureimshow(h);title(‘阴影去除结果‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2328  2013-05-24 23:33  hsv_file.m

评论

共有 条评论