4.2 コンピュータが画像を表現する方法
画像とは何か?
コンピュータがどのように画像を認識し解釈するのかを理解したいなら、まずコンピュータの視点から画像とは実際に何なのかを知る必要があります。

人間にとって、画像は物体、色、感情に満ちた意味のあるシーンに見えるかもしれません。しかしコンピュータにとって、画像はピクセルからなる数値データの格子に過ぎず、各ピクセルは明るさや色を表す値を保持しています。これらの数字を数学的モデルやアルゴリズムで処理することで、コンピュータはパターンを検出し、形状を識別し、物体を区別し、最終的に画像が何を含むかについて判断できるようになります。人間の知覚と機械の表現とのこの違いを理解することは、コンピュータビジョンがどのように動作するかを理解する第一歩です。
数値の配列としての画像

デジタル画像は値の格子です。格子内の各位置はピクセルと呼ばれます。
- グレースケール画像では、各ピクセルは通常 1 つの値を保持します。
- カラー画像では、各ピクセルは複数の値を保持し、それぞれがチャンネルに対応します。
コンピュータにとって、画像は「猫」でも「車」でもありません。形状、データ型、数値内容を持つ配列です。
チャンネル

チャンネルとは、各ピクセルに保存される 1 種類の値のことです。たとえばグレースケール画像は 1 チャンネルですが、カラー画像は RGB のように 3 チャンネルを持つことが多いです。言い換えれば、コンピュータは画像をチャンネル別に並んだ数字として見ており、現実世界の物体として直接見ているわけではありません。OpenCV では RGB ではなく BGR 順をよく使います。多くの初心者は RGB 画像から学び始めますが、タスクによって異なるチャンネル配置が使われます。
| 表現 | 意味 |
|---|---|
| グレースケール | ピクセルあたり 1 つの輝度値 |
| RGB / BGR | ピクセルあたり 3 つのカラーチャンネル |
| HSV | 色相、彩度、明度 |
OpenCV は通常 RGB ではなく BGR 順を使います。これは実用上の重要な点です。
解像度
解像度とは、画像が含むピクセル数を表します。たとえば 640 x 480 や 1920 x 1080 などです。

解像度が高いほど通常はより多くの詳細が得られますが、同時に以下も増加します:
- メモリ使用量
- 処理コスト
- 学習と推論の時間
フレーム列としての動画
動画は時間順に並んだ画像の流れです。

つまり動画は 2 層の複雑さを導入します:
- フレームごとの視覚構造
- フレーム間の時間的変化
課題

実際のカメラ入力は次の影響を受けることがあります:
- モーションブラー
- 暗所
- ノイズ
- レンズ歪み
- 圧縮アーティファクト
- フレームドロップ
このため、優れたコンピュータビジョンの仕事はモデルだけでなく、データ品質にも依存します。
試してみる
OpenCV で画像を操作する
#clone the source code
git clone https://github.com/Seeed-Projects/reComputer-Jetson-for-Beginners
cd reComputer-Jetson-for-Beginners/4-Computer-Vision/4.2-How-Computers-Represent-Images/code
# Install opencv if you don't install before
pip install opencv-python
#run the script
python show_img.py次のような出力が得られます:

動画の読み込み
python show_video.py次のような出力が得られます:

演習 / リフレクション
- 画像を 1 つ読み込み、その
shapeとdtypeを表示してください。 - 同じ画像をグレースケールと HSV に変換してください。視覚的にどう変わるかを記述してください。
- 同じ画像を 2 つの異なる解像度にリサイズし、ファイルサイズや処理時間を比較してください。
- 短い動画を開き、10 秒間に約何フレームが表示されるか数えてください。
まとめ
画像は単なる絵ではなく、構造化された数値データです。ピクセル、チャンネル、解像度、動画フレームを理解することは、しきい値処理から CNN まで後で出てくるすべてのアルゴリズムがこれらの表現を対象に動作するため、不可欠です。
推奨される次のステップ
4.3 古典的コンピュータビジョンへ進んでください。