記事ディレクトリ
1.画像
1. 画像情報
Q:画像はどのようにコンピュータに保存されますか? A:コンピューターでは、一般的に使用される行列を使用して のサイズのデジタル画像を表現します。行列要素の値は、画像の対応する位置のピクセル値です。
M x N
M x N
パソコンのローカルディスクにあるカラー画像は、1台のパソコンを右クリックして「プロパティ」を選択すると、画像の基本情報を見ることができます。
2. 画像の種類
1) バイナリ イメージ:
Q:バイナリ イメージとは何ですか? A: 2 値画像の 2 次元行列は 0 と 1 の 2 つの値のみで構成され、「0」は黒を表し、「1」は白を表します。バイナリ イメージは、グレースケール イメージの特殊なケースと見なすことができます。バイナリ イメージは通常、テキストや線画のスキャン認識 (OCR) やマスク イメージの保存に使用されます。
2) グレースケール画像:
Q:グレースケール画像とは何ですか? A:グレースケール イメージは、ピクセルごとに 1 つのサンプル カラーのみを含むイメージで、通常、最も暗い黒から最も明るい白までのグレー スケールとして表示されます。グレースケール画像は白黒画像とは異なります. コンピュータ グラフィックスの分野では, 白黒画像は黒と白の 2 色しかありませんが, グレースケール画像は黒と白の間の多くのレベルの色深度を持っています.
3) カラーマップ:
Q:カラーマップとは何ですか? A:通常、カラー画像の各ピクセルは、赤 (R)、緑 (G)、青 (B) の 3 つの要素で表されます。画像の各ピクセルの色値 (RGB の 3 原色で表される) は、画像マトリックスに直接格納されます. 各ピクセルの色は、R、G、B の 3 つの成分で表す必要があるため、M とN はそれぞれ画像の行数と列数を表し、それぞれの 2 次元行列は各ピクセルの R、G、B の 3 つの色成分を表します。イメージのデータ型は通常、8 ビットの符号なし整数であり、通常はトゥルーカラー イメージを表現および格納するために使用されます。
RGB
M x N
RGB
2.画像変換
1. カラー画像の 3 つのチャンネルを分離する
通常、カラー画像は 3 チャンネルの画像としてコンピュータに保存されます。画像の各ピクセルは、3 つの数値で構成されるベクトルによって量子化されます。最も一般的なのは、R、G、B の 3 つのコンポーネントです。RGB
モデルのこれら 3 つの要素の値は、それぞれ赤、緑、青の 3 原色の明るさを表します。split
これら 3 つのチャネルを関数で分離できます。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace cv;
using namespace std;
int main() {
Mat srcImage = imread("...\\dog.jpg");
if (!srcImage.data)
return 1;
imshow("srcImage", srcImage);
vector<Mat> planes;
split(srcImage, planes);
imshow("B", planes[0]);
imshow("G", planes[1]);
imshow("R", planes[2]);
waitKey(0);
return 0;
}
実行結果を図に示します
2. 画像のグレースケール処理
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace cv;
using namespace std;
int main() {
//读取源图像并转化为灰度图像
cv::Mat srcImage = imread("...\\dog.jpg");
if (!srcImage.data)
return 1;
//读取源图像并转化为灰度图像
Mat srcGray;
cvtColor(srcImage, srcGray, CV_RGB2GRAY);
//显示源图像及灰度图像
imshow("srcImage", srcImage);
imshow("srcGray", srcGray);
waitKey(0);
return 0;
}
実行結果を次の図に示します。