728x90

영상처리 48

[python] cv2 이미지를 pillow 이미지로 변경하기, Image.fromarray()

저는 영상처리 및 컴퓨터비전 관련 과제를 수행할 때 opencv와 pillow를 자주 사용하곤 합니다. 그러다보니 이미지를 opencv (cv2)에 맞게 변환시켜야 할 때가 있고, pillow에 맞게 변환시켜야 할 때도 있습니다. 변환 과정 없이 그냥 사용하면 에러가 납니다. 서로 규격이 안 맞는 것이죠. 오늘은 cv2.imread()로 읽은 이미지를 pillow 이미지로 변환하는 것에 대해 살펴보도록 하겠습니다. cv2로 읽은 이미지는 넘파이 배열에 담겨집니다. 이것을 pillow 이미지로 변환하려면 pillow (PIL) 패키지의 Image.fromarray() 함수가 필요합니다. 1 2 3 4 5 6 7 8 9 10 11 import cv2 from PIL import Image cv2_img = ..

이미지에서 노이즈 제거하는 디노이징 알고리즘, NLmeans 설명 (python 코드 포함)

가장 간단하게 이미지에서 노이즈를 제거하는 방법은 예전에 소개해드렸던 Gaussian 필터, Median 필터, Bilateral 필터를 사용하는 것입니다. Gaussian, Median, Bilateral 필터 처리는 모두 이웃한 주변 픽셀들의 값을 가지고 현재 픽셀의 값을 바꿔준다는 특징을 갖고 있습니다. 예를 들어, Median 필터는 현재 픽셀의 주변 이웃들의 중앙값(median)을 구해서 그것을 현재 픽셀의 값으로 삼아줍니다. 그런데 이러한 Gaussian, Median, Bilateral 필터처리를 이용해서 노이즈를 제거하는 것은 한계가 많습니다. median 필터만 해도 salt-and-pepper와 같이 위치 상 떨어져 있는 픽셀들에 노이즈가 낀 경우에만 성공적일 뿐 노이즈가 여러 픽셀에 ..

초해상화(Super-resolution)란? 저화질 영상을 고화질로 바꿔주는 기술

오늘의 주제는 이미지 초해상화(super-resolution)입니다. 초해상화란 저해상도 영상을 고해상도 영상으로 변환해주는 과제입니다. 영상의 해상도가 좋을수록 당연히 그 영상을 시청하는 사람들의 만족도도 높겠죠. 그렇기 때문에 초해상화는 컴퓨터비전 분야 중에서도 연구할 가치가 꽤 높은 분야입니다. 우리는 당연히 고해상도의 이미지를 원합니다. 훨씬 더 선명하고 실제에 가깝기 때문입니다. 그러나 고해상도의 사진이나 동영상은 그만큼 많은 용량을 차지합니다. 따라서 전송하는데 시간이 많이 걸리죠. 인터넷 비디오 스트리밍으로 동영상을 시청한다면 고해상도의 영상은 버퍼링을 유발할 수 밖에 없습니다. 그래서 대개는 인터넷 사정에 맞춰 저해상도의 영상을 송출합니다. 해상도는 조금 포기하더라도, 속도는 얻겠다는 심산..

[python] opencv (cv2) 패키지 유용한 함수 10개 정리

opencv-python은 영상처리 및 컴퓨터비전에 관한 대표적인 패키지입니다. opencv-python의 유용한 함수들을 이 곳에 정리해보려고 합니다. 제가 자주 사용하는 함수들을 위주로 정리하도록 하겠습니다. 각 함수에 대해서 아주 상세히 다루지는 않겠지만, 기본적인 사용법과 이후 추가 검색을 위한 힌트는 얻으실 수 있을 것이라고 생각합니다.^^ 1. 이미지 읽기: cv2.imread() 컬러 이미지를 읽으려면 cv2.IMREAD_COLOR를, 그레이스케일 모드로 읽으려면 cv2.IMREAD_GRAYSCALE을 입력해주시면 됩니다. 참고로 opencv-python에서 컬러이미지는 BGR 순서로 구성되어 있음을 주의하세요.^^ 2. 이미지 컬러 공간 변환: cv2.cvtColor() BGR 색공간을 g..

Harris 코너 검출기의 이해

디지털 이미지는 점들, 즉 픽셀들의 집합으로 구성되어 있습니다. 그 점들 중에서 가장 중요한 점들은 단연 코너점들입니다. 코너점(corner point)이란 두 방향 이상에서 변화가 급격한 점입니다. 반면 엣지점(edge point)은 한 방향에서 변화가 급격한 점입니다. 이도 저도 아닌 점들은 평탄한 점(flat point)이라고 부릅니다. 코너점이 중요한 이유는 이미지에서 가장 중요한 구조 정보를 담고 있기 때문입니다. 다른 정보를 모두 없애고 코너점들만 남겨놔도 이미지 내의 물체들의 형상을 대충 알 수 있습니다. 그러면 오늘은 가장 기초적이면서도 효율적인 코너점 검출기인 Harris 코너 검출기에 대해서 알아보겠습니다. Harris 코너 검출기는 1988년에 Harris와 Stephens에 의해 작..

[IQA] 콘트라스트 변화에 의한 품질의 변화를 고려한 알고리즘, RIQMC

적절한 콘트라스트 변화는 이미지의 지각 품질(perceptual quality)을 향상시킨다. 지각 품질이란 우리가 이미지를 보고 인지하는 품질이다. 똑같은 이미지라도 콘트라스트에 따라 우리가 느끼는 품질이 다르다. 이것에 주목하여 만든 알고리즘이 바로 RIQMC(reduced-reference image quality metric for contrast change)이다. 이 알고리즘의 original 논문은 2016년에 Ke Gu 등에 의해 IEEE Trans. on Cybernetics에 게재된 "The Analysis of Image Contrast: From Quality Assessment to Automatic Enhancement"이다. 아래 이미지들은 콘트라스트만 다를 뿐 같은 내용을 담..

[논문 정리] Li, "Content-partitioned structural similarity index for image quality assessment", signal processing: image communication(2010)

논문 요약 저자들은 먼저 SSIM 알고리즘을 이용해서 지역 품질 점수를 얻었다. 그 다음에 이미지의 엣지 맵을 산출한 것을 기준으로 이미지의 픽셀들을 다음과 같은 네가지 유형으로 분류했다. 엣지 맵 산출을 위해서는 Sobel 연산자를 활용했다. 변화된 엣지(changed edge), 보존된 엣지(preserved edge), 질감이 있는 부분(textured region), 평탄한 부분(smooth region). 이렇게 분류하기 위해서 저자들은 두 개의 문턱값 TH1과 TH2를 이용했다. TH1은 0.12*g_max로, TH2는 0.06*g_max로 설정했다. 여기서 g_max는 원본 그레디언트 크기의 최댓값을 의미한다. 1) 만약 원본 그레디언트와 왜곡 그레디언트가 모두 TH1보다 크면 보존된 엣지 ..

[IQA] DoG 분해를 활용한 학습 기반 이미지 품질 평가 알고리즘, DOG-SSIM

오늘은 2D 이미지 품질 평가(image quality assessment, IQA) 알고리즘 중 DOG-SSIM에 대해 소개하겠다. 이 알고리즘의 original paper는 Soo-Chang Pei에 의해 2015년에 TIP에 개제된 "Image Quality Assessment Using Human Visual DOG Model Fused With Random Forest"이다. 이 알고리즘을 구성하는 것 중 중요한 요소들은 크게 세 가지다. DoG 분해 + SSIM + Random Forest. DoG-SSIM 모델에 대해 간단히 설명하겠다. 먼저 원본 이미지와 왜곡 이미지에 대해서 DoG 분해를 실시한다. DoG(Difference of Gaussian)는 LoG(Laplacian of Gaus..

위상 합동(Phase congruency)의 의미와 엣지 검출

그레디언트 기반 엣지 연산자들(Sobel, Canny 등)은 밝기 및 콘트라스트 변화에 취약하다. 이말인즉슨 두 이미지가 내용은 같고 단순히 밝기 또는 콘트라스트만 다르더라도, 검출된 엣지에 차이가 발생한다는 것이다. 반면 위상 합동(Phase congruency)을 이용해서 엣지를 검출하면 밝기(brightness)와 콘트라스트(contrast) 변화에 영향을 받지 않는다. 그 이유에 대해 살펴보자. 결론적으로 말하자면 픽셀 영역이 아닌 주파수 영역에서 엣지를 검출해내기 때문이다. 먼저 1차원 신호를 예를 들어 위상 합동의 개념에 대해 이해해보자. 시간 $x$일때의 1차원 신호는 각각의 진폭(amplitude)과 위상(phase)을 지닌 여러 코사인 곡선들(각기 다른 주파수들을 가짐)의 합으로 표현할 ..

[Visual saliency] 그래프 기반 visual saliency 알고리즘, GBVS

visual saliency 알고리즘은 이전 포스팅 https://bskyvision.com/509에서 설명했듯이, 이미지 내에서 시각적으로 의미있는 지역이 어딘가를 예측해주는 알고리즘이다. 크게 두 부류로 나눌 수 있는데, 하나는 FP(fixation prediction) 방식이고 또다른 하나는 SOD(salient object detection) 방식이다. 전자는 사람의 시선이 머물 곳을 예측해내는 방식이고, 후자는 시각적으로 중요한 물체를 검출해내는 방식이다. GBVS의 이해 GBVS(graph-based visual saliency)는 FP 방식에 속하는 알고리즘이다. 이 알고리즘의 original paper는 캘리포니아 공대의 Harel 등이 저술한 "Graph-based Visual Salie..