Language - Python(Opencv) 48

Python Opencv - #26, 영상 모폴리지 처리

▶ 모폴로지 - Morphology 모폴로지는 형태학이라는 의미를 갖고 있습니다. 영상을 형태학적인 측면으로 접근하는 것이 모폴로지 입니다. 모양에 대한 정보에 더 집중을 합니다. 다양한 영상 처리 시스템에서 전처리 또는 후처리 형태로 널리 이용됩니다. 이진 영상 구조 요소(structuring element)는 모폴로지 연산의 결과를 결정하는 커널, 마스크, 윈도우 입니다. 모폴로지는 필터링과 비슷한 연산을 내부에서 진행합니다. 모폴로지에서는 필터가 structucturing element 라고 합니다. 다양한 형태가 있지만 주로 정방형 행렬(3X3)을 이용합니다. 필터와 마찬가지로 중앙에 고정점(Anchor)이 있습니다. → 이진 영상의 침식(erosion) 연산 구조 요소가 객체 영역 내부에 완전히..

Python Opencv - #25, Threshold

▶ 영상의 이진화 - Binarization 영상의 이진화는 영상의 픽셀 값을 0 또는 255(1)로 만드는 연산입니다. 0은 검정색, 255는 흰색을 의미합니다. 이진화를 하는 이유는 1. 배경과 객체를 구분, 2. 관심 영역과 비관심 영역 구분 입니다. 마스크 영상도 이진 영상의 한 형태라고 볼 수 있습니다. → 그레이스케일 영상의 이진화 그레이스케일 영상의 이진화는 픽셀 값이 임계값을 넘으면 0(검은색) 임계값 보다 낮으면 255(흰색)으로 표현합니다. 영상의 히스토그램을 보았을 때 픽셀 값이 100, 150 두 지점에 모여있는 것을 확인할 수 있습니다. 임계값을 130로 설정한다면 두 지점을 구분할 수 있습니다. 이처럼 히스토그램을 보고 적절한 임계값을 설정하는 것이 중요합니다. → 임계값 함수 ..

Python Opencv - #24, Hough 변환 예제(원 검출)

▶ 허프 변환 원 검출 허프 변환을 응용하여 직선 뿐만 아니라 원을 검출할 수 있습니다. 직선 검출과 같이 원의 방정식을 파라미터 좌표평면에 표현하면 3차원 축적 평면이 되므로 연산속도가 너무 오래 걸립니다. 속도를 더 빠르기 위해 제안된 방법이 Hough gradient method 입니다. → Hough gradient method 원에서 검출된 에지의 원주 점의 정보를 이용합니다. 원 에지 픽셀에서 그래디언트를 계산합니다. 그래디언트 크기 방향으로 직선을 그리면서 값을 누적시킵니다.. 그래디언트 크기는 원의 중심을 향하므로 직선은 원의 중심에서 모이게 됩니다. 이처럼 원의 중심을 찾습니다. 원의 중심을 찾은 후 반지름을 찾습니다. 원의 중심에서 반지름을 점점 키워가면서 원주와 만나는지를 확인합니다...

Python Opencv - #23, 윤곽선 검출 (캐니 에지 검출 방식)

▶ 캐니 에지 검출 좋은 에지 검출기의 조건은 3가지 입니다. 1. 정확한 검출 - Good detection 픽셀이 조명에 의해 미세한 영향을 받게 되어 임계점보다 크거나 낮아질 수 있습니다. 이처럼 에지가 아닌 점을 에지로 찾거나 또는 에지인데 에지로 찾지 못하는 확률을 최소화 한것을 정확한 검출이라고 합니다. 2. 정확한 위치 - Good localization 실제 에지의 중심을 검출하는 것입니다. 3. 단일 에지 - Single edge 하나의 에지는 하나의 점으로 표현한다는 것입니다. 이 세가지 조건을 충족해야 좋은 에지라고 할 수 있습니다. ▶ 케니 에지 검출 4단계 케니 에지 검출 방법은 4단계로 구성되어 있습니다. 1. 가우시안 필터링 가우시안 필터링을 통해 잡음을 제거합니다. 쇼벨필터에..

Python Opencv - #22, Gradien - Edge 검출

▶ 영상의 그래디언트 - Gradient 그래디언트는 함수 f(x,y)를 x축과 y축으로 각각 편미분(partial derivative)하여 벡터 형태로 표현한 것입니다. x방향 미분과 y방향 미분을 따로 계산하고 벡터라는 것으로 묶은 것이 그래디언트입니다. x방향 미분 성분과 y방향 미분 성분을 행렬 형태로 표현하여 한꺼번에 표현했습니다. 그래디언트의 크기와 방향은 다음 식으로 구할 수 있습니다. 그래디언트 크기 그래디언트 방향 실제 영상에서 그래디언트 크기는 픽셀 값의 차이, 변화량을 의미합니다. 그래디언트 방향은 픽셀 값이 가장 급격하게 증가하는 방향을 나타냅니다. → 2D 백터의 크기 계산 함수 - cv2.magnitude 소벨 필터로 구한 x방향, y방향 미분 값을 cv2.magnitude에 입..

Python Opencv - #21, 영상 미분과 필터 적용(소벨, 샤를)

▶ 에지 검출과 미분 1. 에지 - edge 에지는 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분입니다. 객체와 객체, 객체와 배경에 어떤 경계를 나타내는 용어입니다. 경계부분에는 픽셀값이 크게 변경된다고 가정하고 에지를 구합니다. 영상에 미분을 하는 이유는 에지를 검출하기 위함입니다. 2. 기본적인 에지 검출 방법 에지 검출을 위해 픽셀값이 급격하게 변하는 부분을 찾아야합니다. 미분은 변화율을 나타내는 척도입니다. 영상을 미분하여 에지를 검출할 수 있습니다. 영상을 (x,y) 변수의 함수로 간주했을 때, 이 함수의 1차 미분 값이 크게 나타나는 부분을 검출합니다. 검출한 미분값에 T 임계값을 설정해주는 것이 중요합니다. 임계값보다 높으면 에지로 판단하는 기준이 됩니다. 따라서 T값을 어떻게 설정하냐가..

Python Opencv - #20, 기하학적 이미지 변환

▶ 어파인 변환과 투시 변환 1. 어파인 변환 - Affine Transform 어파인 변환은 영상의 이동, 전단, 확대, 회전을 조합할 때 직사각형이 평행사변형으로 변화하게 됩니다. 이것을 통들어서 어파인 변환이라고 합니다. 어파인 변환을 표현하는 방법은 2 X 3 행렬의 실수형에 회전, 크기, 이동 정보가 들어가 있습니다. 어파인 변환은 미지수가 6개이기 때문에 6개의 식이 필요하며 점 3개가 어디로 이동했는지 알면 행렬로 표시할 수 있습니다. 점 세개의 이동정보를 알면 어파인 행렬로 표시가 가능하며 세개의 이동정보로 마지막 점의 위치를 유추할 수 있습니다. 2. 투시 변환 - Perspective transform 어파인 변환보다 자유도가 높은 것이 투시변환입니다. 직사각형보다 자유도가 높은 사다리..

Python Opencv - #19, 영상 크기 변환

▶ 크기 변환 - Scale transformation 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환입니다. x축과 y축 방향으로의 스케일 비율(scale factor)를 지정해줍니다. 크기 변환은 빈번하게 사용되는 작업이므로 OpenCV에서는 cv2.resize 함수를 제공하고 있습니다. 함수 설명 cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) -> dst • src: 입력 영상 • dsize: 결과 영상 크기. (w, h) 튜플. (0, 0)이면 fx와 fy 값을 이용하여 결정. • dst: 출력 영상 • fx, fy: x와 y방향 스케일 비율(scale factor). (dsize 값이 0일 때 유효) • i..

Python Opencv - #18, 영상 잡음 제거

▶ 영상의 잡음 영상의 잡음(Noisr)는 영상의 픽셀 값에 추가되는 원치 않는 형태의 신호를 의미합니다. f(x,y) = s(x,y) + n(x,y) 여기서 f(x,y)는 획득된 영상, s(x,y)는 원본 신호, n(x,y)는 잡음을 의미합니다. 대부분의 경우 센서에서 잡음이 추가됩니다. → 잡음의 종류 두 가지 잡음을 알아보겠습니다. (1) 가우시안 잡음(Gaussian noise) 대부분의 잡음 형태는 가우시안 형태입니다. 잡음이 가우시한 형태로 추가되는데 픽셀값에서 조금 더 어두워지거나 밝아지게 됩니다. (2) 소금$후추 잡음(Salt&Pepper) 요즘 소금 후추 잡음은 거의 없습니다. → 잡음 제거(1) - 미디언 필터 - cv2.medianBlur 미디언 필터(Median filter)는 주..

Python Opencv - #17, 영상 필터링(GaussianBlur 필터)

→ 영상에 블러링(가우시안 필터) 적용하기 - cv2.GaussianBlur 평균값 필터 블러링의 단점은 필터링 대상 위치에서 가까이 있는 픽셀과 멀리 있는 픽셀이 모두 같은 가중치를 사용하여 평균을 계산합니다. 멀리 있는 픽셀의 영향을 많이 받아 필터 결과의 퀄리티가 낮아지게 됩니다. 이러한 단점을 보완하기 위해 가우시안 필터를 많이 사용합니다. 필터에 가우시안 함수를 사용하여 거리에 따른 가중치를 이용합니다. 2차원 가우시안 필터 마스크의 크기는 표준편차에 따라 자동으로 설정됩니다. 필터 마스크 크기 = (8σσ + 1) 또는 (6σσ + 1) 표준편차가 1일 때 가우시안 필터 마스크 → 가우시안 필터링 함수 - cv2.GaussianBlur OpenCV에서 가우시안 필터링 함수를 제공합니다. [함수..