[영상처리] 모자이크 처리하기 (OpenCV-Python)모자이크 처리영상에서 특정 영역을 작게 축소했다가 다시 확대하면 원래의 픽셀과 비슷하긴 하지만, 보간법에 의해서 연산한 결과로 선명도가 떨어져 뿌옇게 보인다. 보간법 알고리즘으로 cv2.INTER_AREA를 사용하면 아래의 코드 예시에서처럼 저해상도 픽셀처럼 된다.코드opencv에서 제공하는 cv2.selectROI() 함수로 ROI를 쉽게 선택할 수 있다. 이후 해당 부분을 축소, 확대하여 선명도가 깨지는 부분으로 변경한다.import cv2 rate = 15 title = 'mosaic' img = cv2.imread('imgs/taekwonv1.jpg') while True: # 마우스 드래그로 ROI 선택 x, y, w, h = cv2.se..
[영상처리] 원근 변환 Perspective Transform (OpenCV-Python)원근 변환원근 변환(perspective transform)은 보는 사람의 시각에 따라 같은 물체도 먼 것은 작게, 가까운 것은 크게 보이는 현상인 원근감을 주는 변환이다. opencv에서 변환 전과 후를 짝짓는 4개의 매핑 좌표만 지정해 주면 원근 변환에 필요한 3x3 변환행렬을 계산해주는 cv2.getPerspectiveTransform() 함수를 제공한다. 이 함수를 이용하여 얻은 변환행렬을 cv2.warpPerspective() 함수를 이용해 적용한다. 코드아래 코드는 이미지에서 마우스로 4개의 꼭짓점을 클릭하면, 해당 영역에 대해 평면처럼 보이도록 원근변환을 해주는 코드이다.import cv2 import ..
[영상처리] Histogram Noramlize(정규화), Equalization(평탄화), CLAHE(opencv-python)Normalization(정규화)정의영상에서 특정 부분에 몰려 있는 값을 전체 영역으로 골고루 분포하게 하도록 만드는 방법을 Normalization(정규화) 라고 한다.적용 공식IN=(I−Min)newMax−newMinMax−Min+newMinI_N = (I-Min) \dfrac{newMax-newMin}{Max-Min}+newMinIN=(I−Min)Max−MinnewMax−newMin+newMinIII: 노멀라이즈 이전 값Min,MaxMin, MaxMin,Max: 노멀라이즈 이전 범위의 최소값, 최대값newMin,newMaxnewMin, newMaxnewMin,ne..
[영상처리] Histogram(OpenCV-python)히스토그램이란?히스토그램이란 뭐가 몇 개 있는지 개수를 세어 놓은 것을 그림으로 표시한 것을 말한다. 히스토그램은 영상을 분석하는데 유용하다. opencv python 코드cv2.calcHist 함수로 쉽게 영상의 히스토그램을 확인할 수 있다.cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])Parameters: • image – 분석대상 이미지(uint8 or float32 type). Array형태. • channels – 분석 채널(X축의 대상). 이미지가 graysacle이면 [0], color 이미지이면 [0],[0,1] 형태(1 : Blue, 2: Gre..

[영상처리] 알파 블렌딩(Alpha Blending)이란? (OpenCV-python)알파 블렌딩(Alpha Blending)이란?두 개의 영상을 합성할 때, 일반적으로 생각할 수 있는 방법은 더하기 연산이다. 그러나 일반적인 덧셈으로는 픽셀값이 255를 넘어가면 overflow가 발생하거나, 255로 고정이 되는데 이렇게 되면 원하는 결과를 얻기가 힘들다. 그래서 두 영상에 가중치를 주어 더하는 방식이 알파 블렌딩이다.g(x)=(1−α)f0(x)+αf1(x)g(x) = (1-\alpha)f_0(x)+\alpha f_1(x)g(x)=(1−α)f0(x)+αf1(x)위의 수식대로 f1의 영상에 가중치 α\alphaα를 곱하고, 다른 영상 f0에는 1−α1-\alpha1−α 를 곱한다. Opencv ..

[영상처리] 적응형 Treshold (OpenCV)적응형 Threshold란?지난 게시물에서 otsu algorithm(thresholding) 에 대해 알아봤다. 이는 하나의 고정된 값으로 thresholding 하는 것인데, 영상의 조명이 일정하지 않거나 배경색이 여러가지인 경우에는 하나의 고정된 threshold로는 좋은 결과를 얻지 못한다. 그래서 이미지를 여러 영역으로 나눈 후에 그 주변 픽셀 값을 기준으로 계산하여 영역마다의 threshold를 지정한다. 이것을 적응형 threshold(Adaptive threshold)라고 한다. OpenCV에서 제공하는 Adaptive Thresholdcv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresh..

[영상처리] 오츠의 알고리즘(Otsu Algorithm, Thresholding)오츠의 알고리즘이란?어떤 영상을 thresholding 하고 싶을 때, 적정한 threshold 값을 찾아주는 알고리즘을 말한다. 방법은 경게값을 임의로 정해서 픽셀들을 두 부류로 나누고 두 부류의 명암 분포를 반복해서 구한 다음 두 부류의 명암 분포를 가장 균일하게 하는 경게 값을 선택한다. 다시말해, 특정 threshold를 T라 하면, T를 기준으로 이진 분류된 픽셀의 비율의 차가 가장 작은 optimal T를 구하는 것이다.오츠 알고리즘은 모든 threshold에 대해 계산해야 하기 때문에 속도가 느리다는 단점이 있다. 또한 노이즈가 많은 영상에는 오츠의 알고리즘을 적용해도 좋은 결과를 얻지 못하는 경우가 있다.코드p..
- Total
- Today
- Yesterday