最近一直在讲matlab的图像处理,其目的是让大家后边更好的对比与fpga处理的过程,matlab图像处理相对简单,只需要调用相应的函数。fpga需要对每个函数的处理过程以及每个步骤都要了解。
后续我还会讲到matlab的人脸识别算法的实现,也将尝试fpga的人脸识别,希望大家鼓励。
在处理图像的时候,特别是处理视频流图像的时候,往往会用到图像差分的方法。顾名思义,图像差分,就是把两幅图像的对应像素值相减,以削弱图像的相似部分,突出显示图像的变化部分。例如,差分图像往往能够检测出运动目标的轮廓,能够提取出闪烁导管的轨迹等等。
中心差分源码:
代码语言:javascript复制I = imread('lena1.png');
figure; imshow(I);
forward_dx = mipforwarddiff(I,'dx'); figure, imshow(forward_dx);
forward_dy = mipforwarddiff(I,'dy'); figure, imshow(forward_dy);
central_dx = mipcentraldiff(I,'dx'); figure, imshow(central_dx);
central_dy = mipcentraldiff(I,'dy'); figure, imshow(central_dy);
function dimg = mipcentraldiff(img,direction)
% MIPCENTRALDIFF Finite difference calculations
%
% DIMG = MIPCENTRALDIFF(IMG,DIRECTION)
%
% Calculates the central-difference for a given direction
% IMG : input image
% DIRECTION : 'dx' or 'dy'
% DIMG : resultant image
%
img = padarray(img,[1 1],'symmetric','both');
[row,col] = size(img);
dimg = zeros(row,col);
switch (direction)
case 'dx',
dimg(:,2:col-1) = (img(:,3:col)-img(:,1:col-2))/2;
case 'dy',
dimg(2:row-1,:) = (img(3:row,:)-img(1:row-2,:))/2;
otherwise,
disp('Direction is unknown');
end
dimg = dimg(2:end-1,2:end-1);
原图
x方向
y方向