%%%% ロボットビジョン(5T) sample02.m  2018/6/7
clear;
Iin1 = imread('image02.png'); %濃度変換に使う画像
I1 = double(Iin1);

Iin2 = imread('image03.jpg'); %二値化に使う画像
I2 = double(Iin2);

% 入力画像のヒストグラム取得
H = zeros(1,256);
for j = 1 : 256
    for i = 1 : 256
        H(I1(j,i)+1)=H(I1(j,i)+1)+1;
    end;
end;

% 画像I1に対して画素値の線形変換
Go_max = 255;
Go_min = 0;
Gi_max = 100;
Gi_min = 20;
for j = 1 : 256
    for i = 1 : 256
        if I1(j,i) > Gi_max
            I1proc(j,i)=255;
        elseif I1(j,i) < Gi_min
            I1proc(j,i)=0;
        else
            I1proc(j,i) = round(((Go_max - Go_min)/(Gi_max - Gi_min)) * (I1(j,i) - Gi_min) + Go_min);
        end;
    end;
end;

% 線形変換後の画像のヒストグラム取得
H2 = zeros(1,256);
for j = 1 : 256
    for i = 1 : 256
        H2(I1proc(j,i)+1)=H2(I1proc(j,i)+1)+1;
    end;
end;

% 画像I2に対して二値化
Thresh = 150;         %しきい値
for j = 1 : 256
    for i = 1 : 256
        if I2(j,i) <= Thresh
            I2proc(j,i) = 1;
        else 
            I2proc(j,i) = 0;
        end;
    end;
end;

% 濃度変換した画像、ヒストグラムの表示
figure(1);
subplot(2,2,1);
imagesc(I1); colormap(gray);
subplot(2,2,2);
plot(H); 
subplot(2,2,3);
imagesc(I1proc); colormap(gray);
subplot(2,2,4);
plot(H2);

% 二値化した画像、プロファイルの表示
figure(2);
subplot(1,3,1);
imagesc(I2); colormap(gray);
subplot(1,3,2);
plot(I2(40,:)); hold on; %複数のプロファイルを１つのグラフに重ね描き
plot(I2(50,:),'red'); hold on;
plot(I2(100,:),'green'); 
subplot(1,3,3);
imagesc(I2proc); colormap(gray);

%%%% EOF
