【入門】キャンバス拡張(Julia)【数値計算】

【入門】キャンバス拡張(Julia)【数値計算】 数値計算
【入門】キャンバス拡張(Julia)【数値計算】

MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

はじめに

の、

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

を書き直したもの。

タイトルはアフィン変換になっているが、
実際にはキャンパス拡張の話。
今回はJuliaで実施する。

キャンパス拡張【再掲】

まずは、キャンパス拡張のイメージを再掲。

キャンパス拡張、画像の縦横を取得して大き目の画像を生成、元画像を中央にコピー

今回は、これを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の正規化が他のツール、言語の差異になりやすいが、今回は関係ない。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

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