
MATLAB
I = imread('kogakuin.jpg');
signText = 'j117188 Tomohiro Cho';%署名内容
fontsize = 50;%フォントサイズ
bI = zeros(size(I,1),size(I,2));%空の背景(黒)画像を作成
position = [10 size(I,1)/2-10 size(I,2)*0.8 size(I,1)*0.3];%署名の位置を指定
In = insertObjectAnnotation(bI,...
'rectangle',...
position,...
signText,...
'Color',[0 0 0],...
'TextColor',[1 1 1],...
'FontSize',fontsize);%署名を挿入(MATLABのビルトイン関数)
In = rgb2gray(In);%グレー画像
In = In >=1;%ピクセル値が「1」未満のピクセルの値を0に戻す
Iout = I;%出力画像初期化
ind = mod(Iout,2)>0;%出力画像のピクセル値が奇数の画素を検出
Iout(ind) = Iout(ind) - 1;%上記検出した画素のピクセル値より1を引き算
In = cast(In,'like',I);%署名画像の型を元画像と合わせる
Iout(:,:,3) = Iout(:,:,3) + In;%出力画像のB成分に署名画像を入れる
subplot(1,3,1), imshow(I), title('元画像')
subplot(1,3,2), imshow(Iout),title('署名入れた後の画像')