あなたに次の選択肢を用意するサイト
Thoth Coworker
~ プログラミングの次++ ~
For
新社会人 / 新学生 / 新院生 / 新研究者
カテゴリ
画像処理でできることを知る
Facebookシェア Twitterツイート LINEで送る
P
ポイント
画像処理でできることを知る
画像処理について全く知らない人が全般を学ぶための記事
  • Point 1
    画像処理は画像を入力に出力様々
    画像処理は与えられた画像に対して様々な処理を行います.各画素には0~255の値が入っており、その数から新しい情報を作り出します.一方で近年は画像を与えることなく画像を生成する技術も成長しています.
  • Point 2
    どんなことができるかから
    拡大、縮小、変形、検出、曲線、切り取り、認識、できることは様々ありますが、できないこともまだまだ多くあります
  • Point 3
    写っていることが全て
    画像処理でモザイクを除去と言ったことは1枚ではできません.画像に写っていない情報について正確に推定/予想させることはできないというのは、画像処理の前提です.(写っていることから推定するのは可能です)
P
ステップ概要
画像処理でできることを知る
初めに画像処理の処理がどんなことをしているかを解説します
画像処理によってできることを事例とともに紹介します.
画像処理によって何ができないのかできない例を紹介します
実際に画像処理をするにあたって知っておくべきソフトウェアの知識について簡単に触れます
Step
1
画像処理の概要
画像処理は多くの場合画像を入力に別の画像を作ったり、認識したり、計算を行います.
ではその「画像」とはコンピュータでどういう風に表現されているのかについて見ていきます.

画像 : コンピュータから見える画像

画像は数字を並べて順番に集めたものに過ぎません.少なくともコンピュータではそのように表現され、その状態で処理をしていきます.ディスプレイはこの数字の列をもらうと対応する色に変換して表示してくれるのです.

カラー画像ではRGBのそれぞれの値を持ちます.赤(R)が0~255, 青(B)が0~255, 緑(G)が0~255の値を表現しますが、これもデータでは、ただ数が三つ並んでいるに過ぎません.グレー画像の場合でも0~255の数字が並んでます.

コンピュータには赤がどんなものかや人間の形がわからないため、このような数字の羅列データに対して画像処理をすることで、画像から人を見つけたり、画像で目立つ境界を見つけたり、色を抜きだしたりすることになります.

それでは次に画像処理の処理をどのように行うのか、色々な例を見てみましょう.
画像 : 画像処理例 : 画像を2倍に拡大

画像を大きくしようとするとその大きくした分の表現を埋めなくてはなりません.今持っている画像で足りない画素は自分で予想して作るしかありません.様々な方法がありますが、上図のように最も簡単な方法では近くの画素の値を使って平均するなどして処理します.工夫した処理にしないとボケたような変な色の画像になったりします.

それでは次の例です.

画像 : 画像処理例 : 境界線の抽出

画像で見える輪郭や境界線は、人間は非常に簡単に見つけられますが、画像処理で頑張って計算しないとその部分を強調できません.多くの画像処理では、人間の脳は簡単に行えることも、実際には時間をかけながら難しい画像処理をおこなう必要が出てきます.


画像 : 画像処理例 : 検出

画像を見つけるというのはコンピュータでは意外と難しく、変形したりしたときにどうやって似た形を見つけるかを考えるのは非常に難しいです.様々な手法がありますが、非常に簡単な方法は少しずつズラしながら最も近かったところを検出したところとする方法です.
この方法はテンプレートマッチングと呼ばれ、地道に各場所でどの程度一致するか、一致しないかを検証します.
画像 : 画像処理例 : 顔検出

近年はDeepLearningで新しい手法ができましたが、その一昔前は、顔の画像の中によく顔にある特徴を見つけて顔っぽいかどうかを判定する方法などが主流でした.

画像 : 画像処理例 : DeepLearningによる物体識別

最新の手法についても見ておきましょう.最新手法でも使う画像はこれまでと変わりません.ただその処理の方法が少し独特になっています.何度も何度もフィルタの計算を行い、画像の特徴を計算することで、最終的に物体の種類や位置を推定しています.
Step
2
画像処理で何ができるか
では、画像処理では上記のような処理で一体どのようなことができるのか、それらについて簡単にイメージでまとめておきたいと思います.

画像 : 以前からできること

簡単な検出や認識、図形の変更や画像の修正などは昔からできています.精度は低く、時間がかかるものや制限の強いものが多いですが、一応はそれらのタスクを達成しています.変形や色の調整等は今やってもあまり変わらないですが、物の検出、数え上げ、顔検出、顔認識などは最新の技術を用いればさらにできることは広がります.
画像 : 近年何ができるようになったか

より人間が行っている認識に近いことができるようになっています.実際精度が低いタスクもありますが、人間が見ても見分けのつかないくらい精度の高い画像を作ったり、物体の識別を行ったりすることができます.ここには書いていませんが、画像編集やタグ付以外に、画風を他の絵に適用する画風変換や自動カラー画像化なども新技術でできるようになってきています.
Step
3
画像処理で何ができないか
それでは、逆に画像処理では何ができないかについてまとめてみます.

近年はやはり目覚ましいDeepLearningの進歩によってできないことは減ってきました.
しかし、それでもなおできないというより難しい条件、画像はまだまだあります.

ここではどういった特徴の画像を使った場合かやどういう処理がいまだにできないかを書いていきます.
ポイント : こんな画像は難しい
  • ぼけているちゃんと写っていない画像
  • つぶれて見えない画像
  • 真っ白、真っ黒になっている画像
つまりは、画像に写っていない情報があると適切な画像処理がそもそもできません.例えば人の顔にモザイクをかけてぼかしたら、1枚の画像から正確に復活させることはできません.DeepLearningを用いてもあくまでできるのは今まで学習した顔から何となく当てはまりそうなものを類推する程度です.
ぼけている画像から適切な画像へはボケ具合によっては復元できるかもしれませんが、基本的に適切に写っていない場合は画像処理を行うのは難しくなります.

ということで、どういった画像が難しいかについてみました.それでは次にどういった処理が難しいのかを見てみます.

ポイント : こんな画像は難しい
  • 見えていないものを見れるようにする
  • 画像に写っていない情報を推定する
  • 人間の専門家が見てわかることよりもわかる
  • 見たことのない画像の推定
どんなに先進的なアルゴリズムを使ってもあらかじめ学習しておかない限り、画像に写っていない情報を推定することはできません.つまり人間の目で見て見えないことは、これまでの技術やましてやDeepLearningでもそれを推定できません. 時折超解像といった画像の解像度をあげる技術がありますが、本当に解像度が高い画像にしているわけではなく、今までの様々な絵から類推して書き込んでいるだけです.現実では写ってて画像では潰れて見えないけどDeepLearningで復活ということはまずありえないことは把握してください.また特にDeepLearningにおいてですが、それまで学習中に見たことに対してはどのような結果を出力するかわからないことが多いです(ネットワークによる)
Step
4
画像処理とソフトウェア
これらの画像処理についてアルゴリズムが幅広く実装されているライブラリは、OpenCVです. C, C++, Python, JavaScriptなどから利用することが可能です.近年のDeepLearningに関してはTensorFlowといったライブラリで実装されることが多いため、古典的な画像処理技術を使うか最新の画像処理技術を使うかでライブラリを使い分けることになります

OpenCV公式サイト
TensorFlowの公式サイト
Done