「画像処理」は、身近な様々な分野で活用されています。
スマホで撮った写真は、画像処理アプリを使うことで、
肌色の色や輪郭を変えたりと、気軽に加工できるかと思います。
他の画像処理の応用例としては、医療分野や自動運転技術などがあります。
また、指紋認証や虹彩認証のような個人認証技術でも、画像処理が応用されており、
カメラから入力されたデジタル画像を画像処理することで、個人識別を実現しています。
さらに、人工知能分野の進展によって、画像処理技術が注目されています。
画像処理と関係の深い画像認識は、人工知能技術との相性が良く、
ここ数年のディープラーニングの成功は、
画像データ形式をうまく畳み込みながら特徴を活用する
といった方法が中心となっています。
なので、より良い人工知能を開発したい場合にも、
成功例を学ぶ際には画像処理の知識があると理解が促進する、といえるわけです。
このように、画像処理は私たちの生活に欠かせない技術となっています。
画像処理は、今後も様々なところで必要です。
画像処理が理解できていると、Photoshopの理解が早くなったり、
画像処理を使えるエンジニアやプログラマなどは、バイトや就職、転職などが有利になるかと思います。
もちろん、画像処理技術を極めて在宅で受託開発をするなども可能です。
他にも、人工知能の分野では、様々なデータを画像データ形式にして機械学習(ディープラーニング)させたりします。
なので、画像処理の知識は、自然言語処理など機械学習分野の転職にも役立ちます。
そこで本記事では、画像処理ってなに?という方から、
- 画像処理を学んでみたい
- 仕事に役立てたい
- 転職で有利になりたい
といったあなたのために、画像処理の基本や基礎知識をわかりやすく説明しました。
特に、画像処理の出発点となる、デジタル画像の作られ方についてまとめました。
本記事の概要
画像処理とは?画像処理に入門したいあなたのための、基本事項や基礎知識はこちらです
画像処理を知るには、まず画像がどんなものかを知る必要があります。
画像処理で使う画像は、「デジタル画像」と呼ばれるように、 デジタル情報で構成された画像になります。
画像について知るには、まず「デジタル」について理解することが必要です。
そこでまずデジタルとその反対の言葉の「アナログ」について、
サクッと説明したいと思います。
まずは、アナログの方から説明しますね。
アナログとは
アナログというのは、時計で言うと、以下のような時計のことです。
時間を示す針は、刻々と変化して、すべての時間を連続的に表現しています。
このアナログ時計のように、連続的な量のことを「アナログ」と呼びます。
デジタルとは
それに対して、「デジタル」という言葉があります。
時計でいうと、以下のような時計になります。
この時計では、1分ごとに時間が変わります。
なので例えば、11時10分と、11時11分の間の時間は表現されていません。
つまり、時間が1分ごとに、とびとびに表現されています。
このように、デジタルというのは、
値がとびとびしかない「離散量(りさんりょう)」のことを指します。
以上まとめると、 デジタル時計のような離散量のことを、デジタルと呼び、
アナログ時計のような、連続量のことを、アナログと呼ぶわけです。
次に、アナログデータから、どのようにしてデジタル画像ができるのか、について説明してみたいと思います。
デジタル画像
デジタル画像のでき方について、デジカメの例で解説したいと思います。
大まかな流れは以下になります。
レンズから入ってきた「像」(アナログ情報)は、
「標本化」と「量子化」というプロセスを経て、
「デジタル画像」(デジタル情報)に変換されます。
この、アナログーデジタルの変換を「A-D変換(エーディ変換)」と呼んでいます。
これらのステップについて、詳しく説明しますね。
「標本化」とは
デジカメのレンズに入ってきた光は、2次元の情報として、
「撮像素子(さつぞうそし):イメージセンサ」と呼ばれる、
- CCD (Charge Coupled Device: シーシーディ)
- CMOS (Complementary Metal Oxide Semiconductor: シーモス)
といった機器に、「像」を作ります。
この「像」の状態は、まだアナログ情報のままです。
CCDなどのイメージセンサには、縦横格子状に、 光の強度を測る素子(受光素子(じゅこうそし))があります。
受光素子とは、フォトダイオードといわれる半導体素子になります。
詳しくは省きますが、p型とn型の半導体を組み合わせたもので、
光の強さに対応した、電荷分離状態を作ることができます。
その電荷量を測定することで、光の強さを測定できる仕組みになっています。
この光を測る点は「標本点(ひょうほんてん)」と呼ぶんですが、
この標本点で光の強さが測定され、具体的に電圧値として記録されます。
(取り出した電圧値のことは「標本値(ひょうほんち)」とも呼びます)
つまり、イメージセンサにある受光素子の1つひとつに、
像の光の強さに対応する電圧値が記録される、というイメージになります。
(実際には、イメージセンサにはさまざまな工夫がされており、
複数個の受光素子の情報をまとめ、増幅して測定されています。
例としては、フレームライントランスファーCCDや、インターライントランスファーCCDなどがあります。)
以上のことを言い換えると、
レンズから入ってきた光の像(アナログ情報)は、
標本点上の標本値として収集される、というわけです。
このプロセスを「標本化」と呼びます。
量子化(りょうしか)とは
収集された受光素子上の電圧値は、連続値となっており、まだデジタル情報ではありません。
各標本点の電圧値は、その値の範囲によって、別の値に変換されます。
ん?なんで変換するの?
と思われるかもしれません。
どういうことかというと、以下のような感じなんです。
ある1つの標本点の電圧値が
- 電圧値Aから電圧値Bの範囲なら、0
- 電圧値Bから電圧値Cの範囲なら、1
- 電圧値Cから電圧値Dの範囲なら、2
- ・・・・
のようにして、連続の電圧値を、離散的な値のどれかに対応させて変えてしまいます。
これをすべての標本点に行うと、
電圧値という連続値だった値が、離散的な値に変えられます。
離散的なデジタル情報に変えられているわけです。
そして、この離散的な値のことを「画素(がそ)」と呼びます。
デジカメの性能を表すときに、500万画素のカメラ、といった言い方をしますが、
その画素のことになります。
「画素(がそ):ピクセル(pixel)」とは
デジカメで景色を撮影するときに、
レンズに入ってくる光はアナログ情報なわけです。
これをデジタル情報に変えるには「標本化」と「量子化」を行います。
このようにしてできた、
1つひとつの標本点が持つ値のことを「画素」また「ピクセル」と呼びます。
ちなみに、アナログ情報をデジタル情報に変える量子化のステップのことを、
特に、「A-D変換(エーディーへんかん)」とも呼ぶわけです。
500万画素のデジカメ、と言ったら、
1枚の写真を、500万個の画素で記録できる
という意味になります。
なので、500万画素と800万画素のカメラだったら、
800万画素の方が画素数が多いので、より細かな情報を持つことができ、
より綺麗に表現できることになります。
というわけで、デジタル画像とは何なのか?について
サクッとまとめたいと思います。
デジタル画像とは
デジカメのレンズに入ってくるアナログ情報は、各標本点ごとに画素値に変えらます。
この画素値の集まりのことを「デジタル画像」といいます。
つまり、デジタル画像は、2次元的な画素値の集まり、ということができます。
こう考えると、行列を連想しやすくなるかと思います。
線形代数との相性が良さそうですよね。
このようにして得られたデジタル画像が、画像処理の出発点となります。
これらの画像処理の書籍もおすすめです↓
画像処理 0番目の入門書: Python/OpenCV 環境構築編 (ミント出版)
画像処理 1番最初の入門書
画像処理入門 速習二値化: Python/OpenCVでサクッと実行 (ミント出版)
画像処理入門 速習「画像補正」: Python/OpenCVでサクッと実行 画像処理シリーズ (ミント出版)
増補改訂版 図解でわかる はじめてのデジタル画像処理
図解入門よくわかる最新画像処理アルゴリズムの基本と仕組み (How‐nual Visual Guide Book)
はじめての画像処理技術(第2版)
ディジタル画像処理改訂新版
画像処理アルゴリズム入門 (I・O BOOKS)
新編 画像解析ハンドブック
Excelで学ぶ統計解析入門 Excel2016/2013対応版
プログラマの数学第2版
図解入門よくわかる物理数学の基本と仕組み (How‐nual Visual Guide Book)
深層学習 (機械学習プロフェッショナルシリーズ)
今すぐ試したい! 機械学習・深層学習(ディープラーニング) 画像認識プログラミングレシピ
データマイニング入門
10日でおぼえるXML入門教室 第2版
いちばんやさしいAI〈人工知能〉超入門
目指せプログラマー! プログラミング超入門 プログラミング的な考え方をしっかり身につけよう Visual Studio Community・C# 編
アルゴリズムの自動微分と応用 (現代非線形科学シリーズ)
Guide to ScalaーScalaプログラミング入門
量子光学
こちらの記事もございます↓
『「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです』
『「自然言語処理」を学びたい人におすすめの良書、10冊はこちらです』
『「人工知能」の「プログラミング」の本質を、手を動かしながら学びたいあなたはこちらをどうぞ【関数型オブジェクト指向AI プログラミング:Scala による人工知能の実装】』
↓こちら無料で読めます
版)”]