画像強調
画像強調の目的は、ヒトまたは機械評価用画像または画像の視覚効果の向上がより適切な
\ [画像強調\開始{ケース}宇宙法\ \平滑{ケース}イメージを開始\ヒストグラム修正を直接変換\端{ケース} \\近傍操作を階調\\ {ケースを}開始\ {ケース}ポイント動作を開始します\画像鮮鋭化\端{ケース} \端{ケース} \\周波数領域法\ \ {}の場合、ローパスフィルタリングさハイパスフィルタリングを\\ \端{ケース} \端{ケース}を開始]
ポイント操作
直接の階調変換
\(G(X、Y)= T [F(X、Y)] \)
\(T \) =>階調マッピング関数
座標位置\は、((X、Y)\ ) である\(F \)引数、階調値が関数を流れる電流を表す\(T \)に\(G \) 、
Tの注目機能\(F (X、Y)\)その引数
直接的な階調変換を分けることができます:
- 線形変換
- 区分線形変換
- 非線形変換
線形変換&区分線形変換
以下のための\(F(X、Y) \) の階調範囲\([B] \ ) 部、線形変換
\ [G(X、Y)= {BA上のDC \} [F(X、Y)-a] + C \]
我々はそれで何ができますか?
簡単な例として、我々は容易に、例えば、白色画像部分白く、黒く黒部分を強度分布を調整することができます
void increase(Mat &inputImage, Mat& outputImage){
outputImage = inputImage.clone();
int rows = outputImage.rows;
int cols = outputImage.rows;
for (int i = 0; i < rows; i++){
for (int j = 0; j < cols; j++){
Vec3b & tmp = outputImage.at<Vec3b>(i, j);
for (int k = 0; k < 3; k++){
if (tmp[k] < 48)
tmp[k] = tmp[k] / 1.5;
else if (tmp[k] > 191)
tmp[k] = (tmp[k] - 192) * 0.5 + 223;
else tmp[k] = (tmp[k] - 38) * 1.33;
}
}
}
レンダリング:
非線形階調変換
\ [G(X、Y)= {10} clog_ [1つの+ F(X、Y)] \]
ヒストグラム
デジタル画像処理では、ヒストグラムは、最も簡単で便利なツールです。
説明グレーレベルヒストグラム関数は、グレースケールの画像の画素数であります
横坐标表示灰度级,纵坐标表示图像中该灰度级出现的像素个数
数据表示:
变量 | 含义 |
---|---|
n | 图像的像素总数 |
L | 灰度级的个数 |
\(r_k\) | 第 k 个灰度级 |
\(n_k\) | 第 k 个灰度级的像素数 |
\(p_r(r_k)\) | 该灰度级出现的频率 |
则 归一化形式:
\[p_r(r_k) = {n_k\over n},~k = 0,1,2,\cdots,L-1\]
公式利于归纳但是不利于理解,我们举个例子说明:
原始图像数据(每个位置上面的数字表示灰度级)
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
6 | 4 | 3 | 2 | 2 | 1 |
1 | 6 | 6 | 4 | 6 | 6 |
3 | 4 | 5 | 6 | 6 | 6 |
1 | 4 | 6 | 6 | 2 | 3 |
1 | 3 | 6 | 4 | 6 | 6 |
直方图
灰度系数 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
像素个数 | 5 | 4 | 5 | 6 | 2 | 14 |
归一化直方图数据
1/6 | 2/6 | 3/6 | 4/6 | 5/6 | 6/6 |
---|---|---|---|---|---|
5/36 | 4/36 | 5/36 | 6/36 | 2/36 | 14/36 |
图像略
直方图性质
- 直方图未反映某一灰度级像素所在位置,即丢失了位置信息
- 一幅图像对应一个灰度直方图,但是不同的图像可能有相同的直方图
- 灰度直方图具有可加性,整幅图像的直方图等于素有不重叠子区域的直方图之和
直方图用途
- 反映图像的亮度、对比度、清晰度。用来判断一幅图像是否合理地利用了全部被允许的灰度级范围
- 图像分割阈值选取,如果某图像的灰度直方图具有二峰性,那么这个图像的较亮区域与较暗区域可以较好分离,取谷底做为阈值点
直方图计算
先求出图像灰度级总数,然后遍历图像,对应像素点的灰度级的像素个数++,最后归一化即可
直方图均衡化
目的:将\(p_r(k_r)\) 修正为均匀分布形式,使动态范围增加,图像清晰度增加,对比度增加
方法:
- 求出灰度直方图
- 计算累积分布\(p'_s(s_k) = \sum_{j=0}^kp_r(r_j)\)
- 计算新的灰度值\(s_k=int[(L-1)p's(s_k)+0.5]\)
\(r_k\) | \(n_k\) | \(p_r(r_k)\) | \(p'_s(s_k)\) | \(s_k\) | \(N'_k\) | \(p_s(s_k)\) |
---|---|---|---|---|---|---|
0 | 790 | 0.19 | 0.19 | 1 | 0 | 0 |
1 | 1023 | 0.25 | 0.44 | 3 | 790 | 0.19 |
2 | 850 | 0.21 | 0.65 | 5 | 0 | 0 |
3 | 656 | 0.16 | 0.81 | 6 | 1023 | 0.25 |
4 | 329 | 0.08 | 0.89 | 6 | 0 | 0 |
5 | 245 | 0.06 | 0.95 | 7 | 850 | 0.21 |
6 | 122 | 0.03 | 0.98 | 7 | 985 | 0.24 |
7 | 81 | 0.02 | 1.00 | 7 | 488 | 0.11 |
新しい\(N'_k \)より高いレベルの\(\ n_k)から
//可以直接调用opencv库写好的方法
void equalization(Mat &input, Mat &output){
Mat imageRGB[3];
split(input, imageRGB);
for (int i = 0; i < 3;i++)
equalizeHist(imageRGB[i], imageRGB[i]);
merge(imageRGB, 3, output);
}