MATLAB,Python,Scilab,Julia比較 第3章 その64【アフィン変換⑧】

MATLAB,Python,Scilab,Julia比較 第3章 その64【アフィン変換⑧】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その64【アフィン変換⑧】

バックナンバーはこちら。
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();

処理結果

フクさん
フクさん

処理結果は以下。

キャンパス拡張(Julia)

考察

太郎くん
太郎くん

これも流れは一緒だね、

フクさん
フクさん

今回として特別な差もないかな。

太郎くん
太郎くん

領域確保して、そこに元画像をコピーするだけだから、
0~1の正規化も処理としては影響ないしね。

フクさん
フクさん

そうそう。

まとめ

フクさん
フクさん

まとめだよ。

  • キャンパス拡張をJuliaで実施。
  • 手順としてはMATLABと一緒。
  • だいたい0~1の正規化が他のツール、言語の差異になりやすいが、今回は関係ない。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました