图片批量处理

批量处理

%%

% 读取文件夹下所有文件,把文件名作为数组

fileFolder = fullfile(matlabroot,'toolbox','images','imdata');

dirOutput = dir(fullfile(fileFolder,'AT3_1m4_*.tif'));

fileNames = {dirOutput.name}'

numFrames = numel(fileNames)

%%

% 将所有图像存入一个多为数组

I = imread(fileNames{1});

sequence = zeros([size(I) numFrames],class(I));

% class(I)获取图像数据类型,此处为uint8

sequence(:,:,1) = I;

for p = 2:numFrames

sequence(:,:,p) = imread(fileNames{p});

end

%%

% 图像局部标准差滤波

sequenceNew = stdfilt(sequence,ones(3));

%%

% 处理前后图像轮播

figure;

for k = 1:numFrames

imshow(sequence(:,:,k));

title(sprintf('Original Image # %d',k));

pause(1);

imshow(sequenceNew(:,:,k),[]);

title(sprintf('Processed Image # %d',k));

pause(1);

end

%% 读取视频

trafficVid = VideoReader('traffic.mj2')

get(trafficVid)

%% 播放视频

implay('traffic.mj2');

%% 去除深色车

darkCarValue = 50;

darkCar = rgb2gray(read(trafficVid,71));

noDarkCar

= imextendedmax(darkCar, darkCarValue);

% 最大扩展变换,作用效果类似二值化,第二个参数为阈值

imshow(darkCar)

figure, imshow(noDarkCar)

%% 图像开操作,去除小白点

sedisk = strel('disk',2);

noSmallStructures = imopen(noDarkCar, sedisk);

imshow(noSmallStructures)

%% 对每一帧进行同样的处理

nframes = trafficVid.NumberOfFrames;

I = read(trafficVid, 1);

taggedCars = zeros([size(I,1) size(I,2) 3 nframes], class(I));

for k = 1 : nframes

singleFrame = read(trafficVid, k);

% 一样的处理过程

I = rgb2gray(singleFrame);

noDarkCars = imextendedmax(I, darkCarValue);

noSmallStructures = imopen(noDarkCars, sedisk);

noSmallStructures = bwareaopen(noSmallStructures, 150);

% 删除二进制图像中像素小于150的所有连通部分,强化开操作

taggedCars(:,:,:,k) = singleFrame;

stats = regionprops(noSmallStructures, {'Centroid','Area'});

% 统计被标记的区域的面积分布

if ~isempty([stats.Area])

areaArray = [stats.Area];

[junk,idx] = max(areaArray);

c = stats(idx).Centroid;

c = floor(fliplr(c));

width = 2;

% 添加一块红色方块

row = c(1)-width:c(1)+width;

col = c(2)-width:c(2)+width;

taggedCars(row,col,1,k) = 255;

taggedCars(row,col,2,k) = 0;

taggedCars(row,col,3,k) = 0;

end

end

%% 把处理完的图片播放为视频

frameRate = trafficVid.FrameRate;

implay(taggedCars,frameRate);

相关文件均属matlab自带,直接运行即可

原文发布于微信公众号 - 帮你学MatLab(MatLab_helper)

原文发表时间:2019-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券