>100 Views
February 25, 24
スライド概要
昨今サイトに載せる画像、Twitter(現X)のバナー画像というように画像をクロップする場面が多々あります。そこで画像内の重要な物体が見切れずに、あるいはその物体の大きさを変えずに画像をリサイズするというニーズに応えるCAS(Content Aware Scaling)の実装を試みました。
大阪大学大学院 基礎工学研究科 システム創成専攻 飯國研究室所属 修士2年 主に機械学習・深層学習に興味あり
情報を考慮した画像の縮小 (Content Aware Scaling) 大阪大学大学院 基礎工学研究科 修士1年 長久紘士
目的 画像を、画像内の重要な物体の大きさを変えずにリサイズしたい! (例:サイトに載せる画像、X(旧Twitter)のバナー画像) トリミング 元画像 全体を 縮小 見切れてしまう 物体がある… 全て同じ比率で 縮小してしまう…
CAS (Content Aware Scaling)[1] 動的計画法を用いて画像中の情報量の小さい部分を削る 城、人などの重要な 情報の大きさを変えずにリサイズ [1]Avidan, Shai, and Ariel Shamir. "Seam carving for content-aware image resizing." Seminal Graphics Papers: Pushing the Boundaries, Volume 2. 2023. 609-617.
CASの処理の流れ 1. 画像に2次微分フィルタをかけて エネルギーマップを作成する (重要な情報ほどエネルギーが高い) 2. エネルギーマップから最もエネルギーの 小さいルートを探索 3. ルートの部分を画像から削除して再配列
エネルギーマップ (1/2) 画像に対してラプラシアンフィルタをかける 1 3 1 0 0 元画像 1 1 1 4 4 1 0 2 1 -8 1 3 3 5 1 0 1 1 1 0 2 2 4 4 ラプラシアンフィルタ 4 2 2 1 1 初期のエネルギーマップ エネルギー(=微分値)が大きいということは,画像内で重要な 情報であることを表す.
エネルギーマップ (2/2) エネルギーマップをラスタ走査し,注目画素の一つ上の行の近傍3 画素の微分値の中から最も小さいものを選択して足し合わせる. 1 3 1 0 0 1 3 1 0 0 4 4 1 0 2 5 5 1 0 2 3 3 5 1 0 8 4 5 1 0 0 2 2 4 4 4 6 3 4 4 4 2 2 1 1 初期のエネルギーマップ 10 5 5 4 5 完成したエネルギーマップ 最終行から最小のエネルギーをたどっていけば,それが 最もエネルギーの低い(削除しても良い)ルートとなる
検証(横方向の縮小) 元画像 300画素縮小 500画素縮小 人,木などの重要な物体の大きさを損なわずに縮小できている
検証(縦・横方向の縮小) 元画像 元画像 縦に200,横に200画素縮小 縦に200,横に200画素縮小
応用1:指定領域の保護 CASで縮小する際に,保護したい領域のエネルギーを大きい値に設定しておく. 領域内の エネルギー を大きく 設定 処理後 動的計画法の性質上,エネルギーが 大きいところを削り取ることはないので, 指定領域を保護できる
応用2:指定領域の削除 指定領域のエネルギーをとても小さい値にすれば,その領域を優先的に削除できる 映りこんだ人を削除したいときなどに活用できる