内容へ移動
講義(山本裕樹)
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
numericalipb:ans2
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 【数値情報処理b】第2回の答え ====== ===== 課題 ===== gradient_forward.R を書き換えて、画像(人によって異なる)をダウンロードしてグレースケール画像にした後にSobelフィルタで輪郭抽出を行うプログラムを作って提出しなさい。 * 画像のダウンロードもプログラム中で行うように書くこと。 * フィルタを作成して correlate() を使うこと。 * フィルタはx方向、y方向それぞれ作って行うこと。 ---- ==== 解答例 ==== <file rsplus report2.R [enable_line_numbers="true"]> # 輪郭抽出(Sobelフィルタ) library(imager) # グレースケール画像 im <- grayscale(load.image("画像のURL")) # x方向のSobelフィルタ f.Sx <- as.cimg(c(-1, 0, 1, -2, 0, 2, -1, 0, 1), x = 3, y = 3) # y方向のSobelフィルタ f.Sy <- as.cimg(c(1, 2, 1, 0, 0, 0, -1, -2, -1), x = 3, y = 3) # 畳み込み演算 im.Sx = correlate(im, f.Sx) im.Sy = correlate(im, f.Sy) # 同時に4枚並べるレイアウト layout(t(1 : 4)) plot(im, main = "元の画像") plot(im.Sx, main = "x方向のSobelフィルタ") plot(im.Sy, main = "y方向のSobelフィルタ") plot(sqrt(im.Sx ^ 2 + im.Sy ^ 2), main = "輪郭の強さ") # レイアウトを元に戻す layout(1) </file> フィルタを 8 で割ってもよい(結果は変わらない)。 <code rsplus> # x方向のSobelフィルタ f.Sx <- as.cimg(c(-1, 0, 1, -2, 0, 2, -1, 0, 1), x = 3, y = 3) / 8 # y方向のSobelフィルタ f.Sy <- as.cimg(c(1, 2, 1, 0, 0, 0, -1, -2, -1), x = 3, y = 3) / 8 </code>
numericalipb/ans2.txt
· 最終更新: 2025/06/25 14:23 by
yuki
ページ用ツール
文書の表示
バックリンク
文書の先頭へ