728x90
728x90
์์ง ๊ฒ์ถ ์๊ณ ๋ฆฌ์ฆ ์์๋ณด๊ธฐ
1. ์๋ฒจ, ํ๋ฆฌ์, ๋ก๋ฒ์ธ , ๋ผํ๋ผ์์ ์ฅ๋จ์
2. ๊ฐ์ฐ์์ -> ๋ผํ๋ผ์์ vs ๋ผํ๋ผ์์ ๋น๊ต
Edge
- Edge๋ ๊ฒฝ๊ณ์ , ์ค๊ณฝ์ ์ ์๋ฏธํจ
- ์์์์ edge๋ ์์์ ๋ฐ๊ธฐ๊ฐ ๋ฎ์ ๊ฐ์์ ๋์ ๊ฐ์ผ๋ก / ๋์ ๊ฐ์์ ๋ฎ์ ๊ฐ์ผ๋ก ๋ณํ๋ ๋ถ๋ถ์ ๋ปํจ
- edge๋ ์์์์ ์๋ ๊ฐ์ฒด์ ๊ฒฝ๊ณ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๋ก, ๋ชจ์๊ณผ ๋ฐฉํฅ์ฑ์ ํ์งํ ์ ์์
- ์์ง์ ํด๋นํ๋ ํ์๋ฅผ ์ฐพ๋ ๊ณผ์ ์ edge detection ์ด๋ผ ํจ
1์ฐจ ๋ฏธ๋ถ
- edge๋ ๋ช ์(๋ฐ๊ธฐ)์ ๋ณํ๊ฐ ํฐ ์ง์
- ๋ช ์์ ๋ณํ์จ์ธ ๊ธฐ์ธ๊ธฐ(gradient)๋ฅผ ๊ฒ์ถํ๋ ๋ฐฉ๋ฒ, 1์ฐจ ๋ฏธ๋ถ์ด๋ผ ํจ
- ์ํ ๋ฐฉํฅ ๋ฏธ๋ถ G(x) = f(x-1, y) - f(x+1, y)
- ์์ง ๋ฐฉํฅ ๋ฏธ๋ถ G(y) = f(x, y-1) - f(x, y+1)
- Edge = |G(x)| + |G(y)|
์๋ฒจ, ํ๋ฆฌ์, ๋ก๋ฒ์ธ ๋ง์คํฌ
- 1์ฐจ ๋ฏธ๋ถ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๋ง์คํฌ
- ๋ง์คํฌ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๊ฐ ๊ฐ๊ณ ํ์์
- ์ค์ฌ ์ง์ ์ ๊ธฐ์ค์ผ๋ก ์ํ์ข์ฐ๊ฐ ๋์นญ
- ์ค์ฌ ์ง์ ์ ๊ฐ์ ํญ์ 0์ ํฌํจํ ์์
- ๋ชจ๋ ์ง์ ์ ๊ฐ๋ค์ ํฉ์ 0
1. Sobel ์์ง ๊ฒ์ถ
- ๋ชจ๋ ๋ฐฉํฅ์ ์์ง๋ฅผ ์ถ์ถ
- ๋์ถํ ํ์๊ฐ์ ๋น๊ต์ ํ๊ท ํํ๋ฏ๋ก ์ก์์ ๊ฐํ ํธ
- ์์ง/์ํ ์์ง๋ณด๋ค ๋๊ฐ์ ๋ฐฉํฅ ์์ง์ ๋ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์
- <์์ง ๋ง์คํฌ> <์ํ ๋ง์คํฌ>
2. Prewitt ์์ง ๊ฒ์ถ
- ์๋ฒจ, ํ๋ฆฌ์์ ๋นํด ๋งค์ฐ ๋น ๋ฅธ ๊ณ์ฐ ์๋
- ์ฃผ๋ณ๊ณผ ๊ด๊ณ์์ด ๊ฒฝ๊ณ๊ฐ ํ์คํ ์์ง๋ฅผ ์ถ์ถ
- ๋ง์คํฌ์ ํฌ๊ธฐ๊ฐ ์์ ๋์ถํ ํ์๊ฐ์ ํ๊ท ํ ํ ์ ์์ผ๋ฏ๋ก ์ก์ ํด๊ฒฐ ๋ถ๊ฐ
- <์์ง ๋ง์คํฌ> <์ํ ๋ง์คํฌ>
3. Roberts ์์ง ๊ฒ์ถ
- ์๋ฒจ, ํ๋ฆฌ์์ ๋นํด ๋งค์ฐ ๋น ๋ฅธ ๊ณ์ฐ ์๋
- ์ฃผ๋ณ๊ณผ ๊ด๊ณ์์ด ๊ฒฝ๊ณ๊ฐ ํ์คํ ์์ง๋ฅผ ์ถ์ถ
- ๋ง์คํฌ์ ํฌ๊ธฐ๊ฐ ์์ ๋์ถํ ํ์๊ฐ์ ํ๊ท ํ ํ ์ ์์ผ๋ฏ๋ก ์ก์ ํด๊ฒฐ ๋ถ๊ฐ
- <์์ง ๋ง์คํฌ> <์ํ ๋ง์คํฌ>
2์ฐจ ๋ฏธ๋ถ
- 1์ฐจ ๋ฏธ๋ถ ๊ฐ์ ํฌ๊ธฐ๋ ์์์์ ์์ง์ ์กด์ฌ์ฌ๋ถ๋ฅผ ์๊ธฐ ์ํด ์ฌ์ฉ๋์ง๋ง
- 2์ฐจ ๋ฏธ๋ถ ๊ฐ์ ๋ถํธ๋ ์์ง ํ์๊ฐ ์์ง์ ๋ฐ์ ๋ถ๋ถ or ์ด๋์ด ๋ถ๋ถ ์ค ์ด๋์ ์๋์ง ์ ์ ์์
- ์์ง๋ฅผ ๊ฒ์ถํ๋ ๊ณผ์ ์์ ๋ฏธ๋ถ์ ๋ ๋ฒ ์ํํ๊ธฐ ๋๋ฌธ์ ์์ง๊ฐ ์ค์ฌ ๋ฐฉํฅ์ ๊ฐ๋๊ฒ ํ์ฑ, ๊ฒ์ถ๋ ์ค๊ณฝ์ ์ด ํ๊ณก์ ์ ์ด๋ฃจ๊ฒ ๋จ
- ๋ฐ๊ธฐ ๊ฐ์ด ์ ์ฐจ์ ์ผ๋ก ๋ณํ๋๋ ์์ญ์ ๋ํด์๋ ๊ฒ์ถํ๊ธฐ ์ด๋ ค์
1. Laplacian ์์ง ๊ฒ์ถ
- ๋ผํ๋ผ์์ ์ฐ์ฐ์์ ์ํ = ๋ถ์ฐ ํฌ๊ธฐ
- 2์ฐจ ๋ฏธ๋ถ์ ์ด์ฉํด ์์์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ์ ์ฃผํ ์ฑ๋ถ์ ์๊ฑฐ๋์ง๋ง ๊ณ ์ฃผํ ์ฑ๋ถ์ ์ ๋ช ํ๊ฒ ๋ํ๋๋ฏ๋ก ์์ง ๋ถ๋ถ์ด ๊ฐ์กฐ๋จ
- ์์ง ๋ถ๋ถ์ด ๊ฐ์กฐ๋๋ฏ๋ก ๊ฒฝ๊ณ์ ๋ถ๋ถ์ ๊ฐ์กฐํ๊ธฐ ์ํด ์ฌ์ฉํจ
- ๊ณ ๋ฆฝ๋ ์ก์์ ๋ฏผ๊ฐํ๊ณ , ์ค๊ณฝ์ ๊ฐ๋๋ง ๊ฒ์ถํ๊ณ ๋ฐฉํฅ์ ๊ตฌํ์ง ๋ชปํจ
- x์ถ๊ณผ y์ถ์ ๋ํ ๊ฐ๊ฐ์ ์ด์ฐจ ๋ฏธ๋ถ์ ์ํํ๊ณ ๋ ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๋ค.
- <๋ผํ๋ผ์์1> <๋ผํ๋ผ์์2> : x์ถ y์ถ ๊ฐ๊ฐ 2์ฐจ๋ฏธ๋ถ
- <๋ผํ๋ผ์์3> <๋ผํ๋ผ์์4> : x์ถ y์ถ ์ ๋๊ฐ์ ๊ฐ๊ฐ 2์ฐจ๋ฏธ๋ถ
2. LoG (Laplacian of Gaussian) ์์ง ๊ฒ์ถ
- ๊ฐ์ฐ์์ - ๋ผํ๋ผ์์ ์ฐ์ฐ
- ๋ผํ๋ผ์์ ์ฐ์ฐ์ด ์ก์์ ๋ฏผ๊ฐํ ์ ์ ๊ฐ์ ํ ๊ฒ
- ๊ฐ์ฐ์์ ํํฐ๊ฐ ๋จผ์ ์ ์ฉ๋ ์์ง ๊ฒ์ถ ๋ฐฉ์์ด๋ฏ๋ก ์ก์์ด ์ค์ด๋ฆ
- ์ก์์ ์ํด ์๋ชป ๊ฒ์ถ๋๋ ์์ง์ ์ ์ค์ด๊ณ ์์ง์ ๊ตต๊ธฐ ๋ ๋๊ฒ ๋ง๋ค์ด์ค
- ํจ์์ ํญ์ด ๋์์๋ก ๊ฐ๊ฒฉ์ด ๋์ ์์ง ๊ฒ์ถ, ํจ์์ ํญ์ด ์ข์ผ๋ฉด ๊ฒฝ์ฌ๊ฐ ๊ธ๊ฒฉํ ์์ง์ ์ธ์ธํ ์์ง ๊ฒ์ถ
์๋ฒจ, ํ๋ฆฌ์, ๋ก๋ฒ์ธ , ๋ผํ๋ผ์์ ์์ง ๊ฒ์ถ ๋น๊ต
์๋ฒจ ๋ง์คํฌ
void sobelEdge(Mat &image, Mat &out)
{
int mask1[3][3] = {
-1, 0, 1,
-2, 0, 2,
-1, 0, 1
};
int mask2[3][3] = {
-1, -2, -1,
0, 0, 0,
1, 2, 1
};
int sum1, sum2;
out = image.clone();
for (int y = 1; y < image.size().height - 1; y++)
{
for (int x = 1; x < image.size().width - 1; x++)
{
sum1 = sum2 = 0;
for (int m = -1; m <= 1; m++)
{
for (int n = -1; n <= 1; n++)
{
sum1 += image.at<uchar>(y + m, x + n) * mask1[m + 1][n + 1];
sum2 += image.at<uchar>(y + m, x + n) * mask2[m + 1][n + 1];
}
}
out.at<uchar>(y, x) = abs(sum1) + abs(sum2);
}
}
}
์ฐธ๊ณ ์ฌ์ดํธ
- http://blog.daum.net/trts1004/12109067
- http://iskim3068.tistory.com/49
- ์ด๋ฏธ์ง ์ถ์ฒ๊ฐ ํ์ธ์ด ์๋์ด ํน์ ์ถ์ฒ๋ฅผ ์์๊ฑฐ๋ ๋ฌธ์ ์ ๋๊ธ๋จ๊ฒจ์ฃผ์ธ์(2020.12.06 ์ด๋ฏธ์ง ์ถ๊ฐ)
728x90
728x90