Histogram, ํ์คํ ๊ทธ๋จ
์์ ๋ด ๊ฐ ๊ทธ๋ ์ด์ค์ผ์ผ ๊ฐ์ ํด๋นํ๋ ํฝ์ ์ ๊ฐ์๋ฅผ ํจ์์ ๊ผด๋ก ๋ํ๋ธ ๊ฒ์ ํ์คํ ๊ทธ๋จ์ด๋ผ๊ณ ํ๋ค. ๋ค์๊ณผ ๊ฐ์ ์์์ผ๋ก ํํํ ์ ์๋ค.
g = ๊ทธ๋ ์ด์ค์ผ์ผ ๊ฐ์ ๋ํ๋ด๊ณ ๋ฒ์๋ 0~255
n_g = ๊ทธ๋ ์ด์ค์ผ์ผ ๊ฐ์ด g ์ธ ํฝ์ ์ ๊ฐ์๋ฅผ ๋ํ๋ธ๋ค
h(g) ํจ์์ ๊ฐ์ ์์์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ฑฐ๋ ์ปค์ง ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก n_g ๋ฅผ ์์์ ์ ์ฒด ํฝ์ ์ ๊ฐ์๋ก ๋๋๋ ์ ๊ทํ(normalize) ๊ณผ์ ์ ํตํ์ฌ ํ์คํ ๊ทธ๋จ์ ํํํ๊ธฐ๋ ํ๋ค.
์ ๊ทํ๋ ํ์คํ ๊ทธ๋จ
์ ๊ทํ๋ ํ์คํ ๊ทธ๋จ ๋ค์๊ณผ ๊ฐ์ ์์์ผ๋ก ํํ๋๋ฉฐ, ํน์ ๊ทธ๋ ์ด ์ค์ผ์ผ(gray scale) ๊ฐ์ด ๋ํ๋๋ ํ๋ฅ ์ ๊ฐ๋ ์ผ๋ก ์ดํดํ ์ ์๋ค.
- p(g) = ํ๋ฅ ๊ฐ, ํ๋ฅ ์ ์๋ฏธํ๋ p๋ก ๋ณ๊ฒฝ (probability)
- N = ์์์ ์ ์ฒด ํฝ์ ์ ๊ฐ์
๊ทธ๋ ์ด ์ค์ผ์ผ(gray scale) ๊ฐ ์ ์ฒด ๋ฒ์์ ๋ํด ์ ๊ทํ๋ ํ์คํ ๊ทธ๋จp(g) ๊ฐ์ ๋ชจ๋ ๋ํ๋ฉด 1์ด ๋๋ค.
ํ์คํ ๊ทธ๋จ์ ํจ์์ ๊ทธ๋ํ๋ผ๊ณ ์๊ฐํ๋ฉด x์ถ์ ๊ทธ๋ ์ด์ค์ผ์ผ ๊ฐ์ด ๋๊ณ , y์ถ์ ํด๋น ๊ทธ๋ ์ด์ค์ผ์ผ ๊ฐ์ด ๋ํ๋๋ ๋น๋์(ํ๋ฅ )์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
void histogram(char* w_name, Mat img)
{
int hist[256] = { 0, };
double scale = 1;
int i, j, max = 0;
Mat canvas(256, 256, CV_8UC1, Scalar(255));
for (i = 0; i < img.rows; i++)
for (j = 0; j < img.cols; j++)
hist[img.at<uchar>(i, j)]++;
for (i = 0; i < 256; i++)
max = hist[i] > max ? hist[i] : max;
max += 10;
scale = max > canvas.rows ? (double)canvas.rows / max : 1; // ๋น์จ ๋ง์ถ๊ธฐ
for (i = 0; i < 256; i++)
{
Point pt1 = Point(i, canvas.rows - (hist[i] * scale));
Point pt2 = Point(i, canvas.rows);
line(canvas, pt1, pt2, Scalar(0)); // pt1์์ pt2๊น์ง ๊ฒ์ ์ ์ ๊ทธ๋ฆฌ๊ธฐ
}
imshow(w_name, canvas);
}
ํ์คํ ๊ทธ๋จ ์คํธ๋ ์นญ
์์์ ํ์คํ ๊ทธ๋จ์ด ๊ทธ๋ ์ด์ค์ผ์ผ ์ ๊ตฌ๊ฐ์์ ๊ณจ๊ณ ๋ฃจ ๋ํ๋๋๋ก ๋ณ๊ฒฝํ๋ ์ ํ ๋ณํ ๊ธฐ๋ฒ์ ํ์คํ ๊ทธ๋จ ์คํธ๋ ์นญ์ด๋ผ๊ณ ํ๋ค.
- ๋ช ์๋น๊ฐ ๋ฎ์ ์์์ ํ์คํ ๊ทธ๋จ์ด ํน์ ๊ตฌ๊ฐ์ ์ง์ค๋์ด ๋ํ๋จ
- ๋ช ์์ ์ต์, ์ต๋๊ฐ์ ๋น์จ์ ์ด์ฉ. ์์์ ์ ์ฒด์ ์ผ๋ก ๊ท ์ผํ๊ฒ ๋น๊ฒจ์ค๋ค.
- ํ์คํ ๊ทธ๋จ ์คํธ๋ ์นญ์ ๊ฑฐ์น๋ฉด ์ ๊ตฌ๊ฐ์์ ๋ํ๋๋๋ก ๋ณํ๋จ
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ช ์๋น๊ฐ ๋์์ ธ์ ๋ณด๊ธฐ ์ข์ ์ฌ์ง ํํ๋ก ๋ฐ๋๊ฒ ๋๋ค.
void histogramStretching(Mat img, Mat& out)
Histogram Equalization, ํ์คํ ๊ทธ๋จ ๊ท ๋ฑํ
ํ์คํ ๊ทธ๋จ ์คํธ๋ ์นญ์ ์์์ ํ์คํ ๊ทธ๋จ์ ์ ํ์ ์ผ๋ก ํผ์ณ์ฃผ๋ ๋ฐฉ์์ด๋ผ๋ฉด, ํ์คํ ๊ทธ๋จ ๊ท ๋ฑํ(Equalization; ํํํ)๋ ํ์คํ ๊ทธ๋จ์ ๋์ ๋ถํฌ ํน์ฑ์ ๊ทผ๊ฑฐํ์ฌ ํ์คํ ๊ทธ๋จ์ ๋ถํฌ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
- 2020.12.07 ์์
- ์ด๋ฏธ์ง ์ถ์ฒ ๋ฐ ์ฐธ๊ณ ์ฌ์ดํธ
- https://iskim3068.tistory.com/40