[딥러닝] Albumentations으로 증강 쉽게하기(Augmentation-python)AlbmentationsAlbumentations는 이미지를 손쉽게 augmentation 해주는 python 라이브러리이다. 코드 몇 줄로 매우 쉽게 구현할 수 있다. 또한 다양한 영상변환 알고리즘을 제공하고 있고, 그 처리속도도 매우 빨라 딥러닝 전처리 용으로 유용하게 사용할 수 있다.1. 이미지샘플 이미지로 Pascal VOC 중 하나의 이미지를 사용했습니다. A.Compose() 안에 augmentation하고 싶은 함수가 들어있는 리스트를 입력하면 됩니다. 각 함수들에는 p라는 파라미터를 입력받게 되어있는데, probability의 약자로 해당 함수가 적용될 확률을 입력하면 됩니다. 1이라면 무조건 적용하..
[영상처리] 모자이크 처리하기 (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..

안녕하세요 오늘은 딥러닝으로 처리하는 각종 기술 중 이미지에 관련한 평가 방법에 대해 정리하고자 합니다. 그중, classification에서 주로 사용하는 평가방법에 대해 알아보겠습니다. [Confusion Matrix] confusion matrix란 아래와 같이 GT(Actual Values) 값과 딥러닝 모델의 예측값(Predicted Values)의 관계 Matrix입니다. 값은 Positive(1)과 Negative(0)으로 구성되어있습니다. 예를 들어, 환자의 암을 예측하는 모델이라고 했을 때 실제 환자가 암이고, 예측 결과도 암이면 True Positive(TP) 실제 환자는 암이지만, 예측 결과는 정상이면 False Negative(FN) 실제 환자는 정상이지만, 예측 결과가 암이라면 F..

안녕하세요, 딥러닝 관련 논문을 읽으며 나중에 공부한 내용을 상기하고자 논문리뷰 포스팅을 시작합니다. 단순 공부 목적으로 틀린 부분이 있으면 지적해주시면 감사하겠습니다. 첫 논문은 Learning Deep Features for Discriminative localization 이라는 논문입니다. [Introduction] 기존 CNN의 모델은 classification 을 이미지 내에서 어떤 특징(feature)를 보고 판단하는지 알 수가 없었습니다. 하지만 출력의 결과를 시각화하여 실제 모델이 이미지의 어떤 부분을 보고 분류하는지 알 수 있게 하였습니다. 이를 Class Activation Map이라고 하며, 줄여서 CAM라고 부릅니다. [모델] 기존 일반적인 모델에서는 마지막 feature map을..
- Total
- Today
- Yesterday