티스토리 뷰
계속적으로 외곽선에 대한 정리를 해보고 있습니다. 이전에 다뤘던 sobel이나 scharr 필터 같은 경우에는 미분 차수를 어떻게 하느냐에 따라서 결과값의 변화가 나타나는 것을 알 수 있었습니다.
그런데 Marr 라는 사람이 이런 방법 외에도 영상처리에 Laplacian을 적용할 수 있지 않을까 해서 1982년에 Vision이라는 책에 그 내용을 정리합니다. 보통 함수는 다음과 같이 구성됩니다.
보다시피 2차 미분항들의 합으로 구성되어 있습니다. 이미지의 가로와 세로에 대한 그레디언트를 2차 미분한 값인 거지요. 사실 보면 거의 소벨 함수에서 xorder와 yorder를 2로 한 값과 유사할 거라고 여겨집니다. 실제로 내부를 들여다보면 다음과 같이 구현되어 있습니다.
중간에 Sobel에 관해서 접근하는 항목이 보입니다. 이를 보아 성격은 거의 유사한데 미분의 정도가 더해진 걸로 여기시면 될거 같습니다. 즉 이때는 xorder와 yorder 값이 정해져 있기 때문에 따로 인자로 넣을 필요가 없지요. 그래서 이 함수의 쓰임도 다음과 같이 됩니다.
void cvLaplace(
const CvArr* src, - 처리할 원 이미지
CvArr* dst, - 처리 후의 이미지
int aperture_size = 3 - Kernel 사이즈
);
Learning OpenCV 책에 따르면 보통 이 함수는 blob을 검출하는데 많이 사용된다고 합니다. blob이라고 하면 이미지 상에서 주위 픽셀과 확연한 픽셀차이를 나타내는 하나의 덩어리입니다. 그래서 주변 픽셀보다 그 blob의 픽셀값이 크면 음수, 작으면 양수 값을 반환합니다.
그러면 이렇게 생각할 수도 있는거지요. 만약 커널을 통과한 후에 주변값과 그 blob의 픽셀 값이 같다면? 누차 말했지만 이 라플라스 함수는 이차 미분 값들의 합입니다. 픽셀값이 급격히 변한다면 그 주변에는 음과 영이 확연하게 갈릴 것이고 그 주위의 값을 1차 미분하면 분명 양수나 음수가 나올 겁니다. 그 와중에 그 포인트에서 멀어지면 다시 그 수에 반하는 값이 나올 것이지요. 다르게 이야기 하면 그런 현상속에서 2차 미분값이 0인 지점을 통과하게 됩니다. 그 점이 바로 엣지가 되는 것이고 이런 특성을 이용해서 엣지 검출하는데 사용할 수 있습니다. 다만 약간 명확하지 않은 부분에 대해서도 엣지라고 판단할 수 있기 때문에 Threashold 값을 주던지의 처리가 필요합니다.
그럼 한번 적용한 결과를 보겠습니다.
<원본 이미지>
무언가의 영향으로 손의 일부분이 잘려있습니다.
size를 증가시킬 때마다 edge가 확연하게 구분되는 것을 볼 수 있습니다. 단 외곽선이 size가 커져가면서 두개로 분리되는 것이 한계인 것이죠. 그러면 일상적으로 정의되어 있는 size에서 sobel과 scharr, laplace를 비교해보겠습니다.
분명 무언가를 필요로 한다면 적당한걸 사용하는게 좋겠지요.
'OpenCV' 카테고리의 다른 글
[OpenCV] Labeling 후의 손 이미지에 대한 관심영역(ROI) 설정 (0) | 2012.09.03 |
---|---|
[OpenCV] Labeling을 통한 손 추적 (0) | 2012.08.30 |
[OpenCV] ConvexHull을 사용한 외곽선 긋기. (0) | 2012.08.28 |
[OpenCV] Scharr filter (0) | 2012.08.23 |
[OpenCV] sobel 미분을 통한 edge extraction (2) | 2012.08.21 |
[OpenCV] Threshold 값의 변화에 따른 edge extraction (8) | 2012.08.14 |
[Kinect with OpenCV] Contour Extraction (0) | 2012.08.07 |
- Total
- Today
- Yesterday
- 한빛미디어
- Expression Blend 4
- arduino
- Variance
- Off-policy
- Kinect SDK
- bias
- Gan
- 딥러닝
- Kinect for windows
- PowerPoint
- Windows Phone 7
- End-To-End
- windows 8
- processing
- Policy Gradient
- ColorStream
- Pipeline
- reward
- SketchFlow
- 강화학습
- dynamic programming
- Distribution
- TensorFlow Lite
- Offline RL
- DepthStream
- Kinect
- RL
- ai
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |