%%%% ロボットビジョン(5T) sample04.m  2015/5/28
clear;
Iin = imread('image04.bmp');
I = double(Iin);

% 移動平均フィルタ
F = [1/9, 1/9, 1/9;
      1/9, 1/9, 1/9;
      1/9, 1/9, 1/9];
% 水平微分（垂直エッジの検出）
%F = [1, -1];
% 垂直微分（水平エッジの検出）
%F = [1;-1];

% フィルタサイズ fv × fh
fv = size(F,1); 
fh = size(F,2); 

% 画像サイズ sv × sh
sv = size(I,1); 
sh = size(I,2); 

% 処理後の画像
I2 = zeros(sv,sh); 

% フィルタサイズを(2w+1)×(2w+1)としたときのw
dv = floor(fv / 2); %floor()は、小数点以下切り捨て
dh = floor(fh / 2);

% 空間フィルタリング
for j = 1+dv : sv-dv  % 端は計算しない
    for i = 1+dh : sh-dh  % 端は計算しない
        % 畳み込み（入力画像の画素値とフィルタ係数との積和）
        for n = 1 : fv 
            for m = 1 : fh
                I2(j,i) = I2(j,i) + I(j+(n-(dv+1)),i+(m-(dh+1))) * F(n,m);
            end;
        end;
    end;
end;

% 注）上記の空間フィルタリングは，次の１行で代替できる
% I2 = filter2(F,I,'valid');

figure(1);
subplot(1,3,1); 
imagesc(I); colormap(gray);
subplot(1,3,2);
imagesc(I2); colormap(gray);
subplot(1,3,3); 
plot(I(75,120:200)); hold on; %75行目，120列から200列目のプロファイル
plot(I2(75,120:200),'red');


%%%% EOF