バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
タイトルはアフィン変換になっているが、
実際にはキャンパス拡張の話。
今回はJuliaで実施する。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
キャンパス拡張【再掲】
太郎くん
まずは、キャンパス拡張のイメージを再掲。
フクさん
今回は、これをJuliaで実現する。
Juliaコード
フクさん
Juliaコードは以下。
using Images
# キャンパス拡張
function canvas_expansion(img, x, y)
(H, W) = size(img);
WID = W+x;
HID = H+y;
e_img = zeros(HID, WID);
e_img[Int32((HID-H)/2)+1:Int32((HID+H)/2), Int32((WID-W)/2)+1:Int32((WID+W)/2)] = img;
img = e_img;
return img
end
function canvas_expansion_test()
# 入力画像の読み込み
img = channelview(load("dog.jpg"));
r = img[1,:,:];
g = img[2,:,:];
b = img[3,:,:];
# SDTVグレースケール
img = 0.2990 * r + 0.5870 * g + 0.1140 * b;
# キャンパス拡張
img = canvas_expansion(img, 300, 300);
save("dog_canvas_expansion_j.jpg",colorview(Gray, min.(abs.(img),1)));
end
canvas_expansion_test();
処理結果
フクさん
処理結果は以下。
考察
太郎くん
これも流れは一緒だね、
フクさん
今回として特別な差もないかな。
太郎くん
領域確保して、そこに元画像をコピーするだけだから、
0~1の正規化も処理としては影響ないしね。
フクさん
そうそう。
まとめ
フクさん
まとめだよ。
- キャンパス拡張をJuliaで実施。
- 手順としてはMATLABと一緒。
- だいたい0~1の正規化が他のツール、言語の差異になりやすいが、今回は関係ない。
バックナンバーはこちら。
コメント