2019年3月13日 更新

スパースモデリング ~少量データから画像を復元~

matlab のコードをもとに,スパースモデリングとは何かについて説明します.今回はスパースモデリングの説明です.

29,824 view お気に入り 0

スパースモデリングは「魔法の技術」とさえ呼ばれています.比較的新しい技術で,これからの画像処理には欠かせない技術となるのではないかと考えられます.

スパースモデリングの特筆すべき特徴として 少ないデータから情報を知る技術 であることがあげられます.

Wikipedia には以下のような記述がありました.

>スパースモデリング(英語: Sparse modeling、スパース sparse とは「すかすか」、「少ない」を意味する)または疎性モデリングとは、少ない情報から全体像を的確にあぶり出す科学的モデリング.

>圧縮センシングの一技法で膨大なビッグデータを解析して大量のデータに埋もれて見えにくくなってしまう有為な情報を抽出したり、法則性を導き出したり、断片的なデータを補完して実状に忠実に再現する.地球科学、MRIや天文学を含む多くの分野で高分解能化に使用される. 医用画像に関しての応用は、2002年頃に筑波大学の工藤博幸らのグループによる先駆的研究があり、2007年のカリフォルニア大学バークレー校准教授のMichael Lustigらのグループによる研究を契機として急速に広がった.

こんなときどうする・・・?

例を挙げて説明しましょう.

以下のように一部が欠損してしまった画像があるとします.

このとき欠損した部分を何かしらで埋めたいのですが,あなたはどうしますか?

もちろんありもしないデータを作ることはどんな技術でも不可能です.しかし,不可能な場合でも 「ある程度想像できそうかどうか」に注目して画像を見てみてください.

 (4490)

一部が欠損してしまいました.どうしましょう
もちろんこんなのは不可能ですね.様々なパターンがありそうです.
想像にまかせて書くしかないですね.

では次はどうでしょうか.

 (4492)

一部が欠損してしまいました.どうしましょう.

確かにこの場所に何があるか,この写真からは分かるはずもありません.しかし隣接した画素が焦げ茶色をしているので,ここも焦げ茶色で塗りつぶせば・・・?


実はもともとの画像は以下のようでした.予想通りでしたね.

 (4494)

同じ様な色で塗ればもともとの画像に似た画像を得ることができそうですね.

スパースモデリングの「ココロ」とそれに隠された数学

今回の例は少し極端すぎたかもしれません.もちろんカメラでこのように一部が欠損したデータを得ることは無理ですし,一部が欠損したデータを復元したいという要求もあまりないと思います.

しかし今回確認したかったのは, 同一の物体・物質であれば画素値も大体似ているだろう!という直観です.

一番目の画像はいろんな物が込み入っているため,想像するのは無理だった.二番目の画像は欠損が背景で,大体同じような色で塗りつぶされていると解釈できるから,何となく想像することが可能だった.


これをどうやって数学的に表現するかが鍵になります.

スパースモデリングの式について説明しましょう.式で表すと以下のようになります.

\begin{align} F = |d-Ax|^2 + \lambda|\nabla x| \rightarrow {\rm min} \end{align}

  • $F$: 評価関数
  • $d$: 観測データ.今回の場合は画像ですね.
  • $A$: 変換行列.どのようにしてデータを得られたかによって,この行列は変わります.
  • $x$: 復元したいデータ.今回の場合は画像です.
  • $\nabla$: 微分を表す演算子です.今回の場合,$x$は画像なので,二方向の微分を意味します.

一つ目の項は観測データとの二乗誤差を計算する項であり,様々なところでよく見ると思います.

では二つ目の項は?

これはL1ノルム(絶対値ノルム)と呼ばれており, ここにスパースモデリングの工夫が隠されています!

L1 ノルムについて

以下の記事に書かれていますので,ご覧ください.ここではこの項がもたらす結果だけ述べます.

L1 ノルムは, 解がスパース,つまりほとんどが0である部分にだけ値を持つような解を作ることが知られています.

今回,L1ノルムで計算しているのは $|\nabla x|$ です.これは画像の輝度値の変化に対応することは先ほど確認しました.

第二項目を加えることで, $|\nabla x|$に多くの$0$を作ることができます

これにより画像の輝度値の変化が少ない画像が作られるわけです!!

均一な部分はより均一になるような効果が働きます.

様々な物体があるような画像ではあまり使えませんが,現実的な問題では,均一な物質,物体を画像化したいような要求は多いと思います.
 (4501)

次回

matlab のコードを用いて,スパースモデリングがどのように機能するのか確認します. 制約項がどのように働くのか.次回お楽しみに!

追記:python でスパースモデリングを実装しました.次ページにリンクがあります.

16 件

関連する記事 こんな記事も人気です♪

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

本記事では,IEEE Transactions on Pattern Analysis and Machine Intelligence に投稿された,「Extracting Straight Lines」の論文を説明し,実装を行います.1986年に投稿された少し古めの論文ですが,アイディアは非常に面白いです.
ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理を解説します.今回は,代表的な空間フィルタリングをpythonで実行してみました。
亀谷 桃子 | 13,781 view
Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

画像処理の一つ,モルフォロジー変換をPython と OpenCVのライブラリを用いて実装し,それを2値画像に対して適用します.
等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

前回の記事「等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 1」の続きです. 実際に実装をして,写像を確かめてみます.
CTの原理②〜投影切断面定理とCT再構成の実装〜

CTの原理②〜投影切断面定理とCT再構成の実装〜

CT (Computed Tomography)の投影切断面定理に関して説明します. また投影が少なくなったとき,どのような挙動を示すのかを数値実験を交えながら紹介します.

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部