반응형

Program/OPEN_CV 80

[Open CV] 필터링 _ 블러링 _ 가우시안 필터

2022.05.17 금일은 블러링 ( 가우시안 필터 ) 관한 강의였다. 전일 강의에서 나왔던 평균값 필터 ( Mean Filter ) 의 경우 필터링 대상 위치에서 가까이 있는 픽셀과 멀리 있는 픽셀이 모두 같은 가중치를 사용하여 평균을 계산하기 때문에 멀리 있는 픽셀의 영향을 많이 받을 수 있다는 단점이 있다. 전일 Mask의 값을 보면 5x5의 Mask 에서 가장 바깥쪽에 있는 픽셀값과 중심부근의 픽셀값 모두 같은 가중치로 1/25 의 필터링을 진행한 것을 보면 알 수 있다. 하지만 가우시안 필터는 중심 픽셀과 가까운 픽셀은 큰 가중치를 주고 , 멀리 있는 픽셀은 작은 가중치를 주어 평균을 계산하기 때문에 조금 더 자연스러운 값을 받을 수 있다. ( 1차원 ) 가우시안 함수란? ( Gaussian F..

Program/OPEN_CV 2022.05.17

[Open CV] 필터링 _ 블러링 _ 평균값 필터

2022.05.16 금일은 블러링 ( 평균값 필터 ) 관한 강의였다. 평균값 필터란 ? - 영상의 특정 좌표값을 주변 픽셀 값들의 산술 평균으로 설정하는 것 - 픽셀들 간의 그레이스케일 값 변화가 줄어들어 날카로운 에지가 무뎌지고, 영상에 있는 잡음의 영향이 사라지는 효과가 있다. 위와 같이 자기 자신을 포함해 주변부의 픽셀의 개수를 나누어 필터링 해주는 것. 실제로 왼쪽 원본 영상보다 오른쪽 3x3 , 5x5크기의 마스크로 평균값 필터를 적용한 영상들이 더욱 부드러워지는 것을 볼 수 있다. 이렇게 필터 결과는 부드러워질 수 있지만 더 많은 연산량이 필요하기 때문에 시간이 더 소요될 수 있다. kernel 의 변수에 np.array ( [[1/9, 1/9, 1/9], [1/9, 1/9, 1/9], [1/..

Program/OPEN_CV 2022.05.16

[Open CV] 필터링 _ 필터링 이해하기

영상의 필터링이란? - 영상에서 필요한 정보만 통과시키고 원치 않는 정보는 걸러내는 작업이다. 영상처리에서 필터링은 2가지 방법이 존재한다. - 주파수 공간에서의 필터링 ( Frequency domain filtering ) 복잡한 수학적인 이론에 대한 이해가 필요한데 일반적인 영상을 주파수 공간으로 변형 ( 이동 ) 한 뒤 저주파성분 ( 부드러운 성분 ) 과 고주파성분 ( 픽셀값이 급격히 자주 바뀌는 성분 ) 을 제외한 중간성분만을 통과시키는 필터링 기법이다. - 공간적 필터링 ( Spatial domain filtering ) 영상의 픽셀 값을 직접 이용 ( 변형 ) 하는 필터링 방법이다. OpenCV에서는 기본적으로 공간적 필터링을 주로 사용하게 되는데 경우에 따라 영상의 사이즈나 사용하고자하는 필..

Program/OPEN_CV 2022.05.15

[Open CV] 기본적인 영상처리 기법 _ 실전코딩 ( 크로마키 합성 )

크로마키 합성이란? - 녹색 또는 파란색 배경에서 촬영한 영상에 다른 배경 영상을 합성하는 기술이다. 크로마키 합성을 위해서는 - 녹색 스크린 영역 추출하기 - 녹색 영역에 다른 배경 영상을 합성하여 저장하기 - 스페이스바를 이요하여 크로마키 합성 동착 제어하기 등의 기능이 필요하다. 일단 cv2.inRange() 함수를 사용하여 녹색 영역의 범위만 검출할 수 있다.그리고 cv2.copyTo() 함수를 사용하여 마스크 연산을 진행한다. 일단 기본적인 사용 함수들은 위 2가지가 있고 실제로 함수들을 어떻게 활용하는지 보자 import sysimport numpy as npimport cv2cap1 = cv2.VideoCapture('woman.mp4')if not cap1.isOpened(): #파일 오..

Program/OPEN_CV 2022.05.14

[Open CV] 기본적인 영상처리 기법 _ 히스토그램 역투영

저번 강의에서도 InRange 함수를 사용하여 원하는 색상값을 추출할 수 있었는데 히스토그램 역투영은 어떤 색상의 히스토그램 분포를 사용하여 해당 히스토그램 분포에 부합하는 픽셀을 선별하는 방법이다. 이는 원색이 아닌 임의의 색상을 추출 ( 선별 ) 하고자 할때 좀 더 효과적으로 사용할 수 있다. 예를들면 영상에 살색 또는 살구색등의 색상들을 HSV 에서 추출하면 H의 애매한 영역에서 추출해야하는데히스토그램 역투영 방법을 사용하면 해당 영상에 분포해있는 살색 부분 또는 살구색 부분을 추출할 수 있다. 위 영상에서 파란색 박스에 해당하는 색만 추출해내고싶다고 한다면 아래와같이 해당 ROI 내부색상과 가장 부합하는 색상만 추출되는 것을 볼 수 있다. cv2.selectROI 함수를 사용하여 위와같은 파란색 ..

Program/OPEN_CV 2022.05.13

[Open CV] 기본적인 영상처리 기법 _ 특정 색상 영역 추출

TrueColor 영상에서 아래와같이 Red Green Blue 색상타입만 추출하도록 할 수 있는 기능을 구현해본다. 간단히 생각해보면 각각의 픽셀값에 저장되어있는 RGB 성분 중 추출하고자 하는 성분의 값이 상대적으로 또는 절대적으로 높은 픽셀값만 Binary 시키면 될 것 같다. 위와 같은 방법도 간간히 사용되지만 원색을 찾을때에는 RGB 보다는 HSV 색 공간에서의 색 추출이 더 많이 사용된다. H는 Hue 성분으로 색상을 표현하므로 H 성분으로 어떤 색을 추출할지 결정한다. S는 Saturation 성분으로 색상의 선명도 ( 순수 색 ) 으로 어느정도 큰 값을 가져줘야한다.마지막으로 V는 밝기 성분으로 밝은 색상인지 어두운 색상인지 구분하는 성분이다. 따..

Program/OPEN_CV 2022.05.12

[Open CV] 기본적인 영상처리 기법 _ 히스토그램 평활화

히스토그램 평활화란 ( Histogram Equalization ) ? - 히스토그램이 그레이스케일 전체구간에서 균일한 분포로 나타나도록 변경하는 명암비 향상 기법이다. 이는 전날에 알아본 Histrogram Stretching 기법과는 조금 다른 방식의 기법이다. 누적 분포함수 ( 히스토그램을 누적해서 함수를 만들고 누적된 함수를 이용해서 픽셀값을 변환하는 기법 ) 을 사용 예를들면 위 표와 같이 p(g) 함수값을 누적으로 더해서 나오는 값이 cdf(g)로 나오는 결과를 볼 수 있는데 위 표에서 나온 값에 현재 영상 픽셀의 최대값을 곱한 뒤 나오는 소수값들을 반올림하여 정수형태로 사용한다. 위와같이 최종적으로 평활화 계산된 이후, 기존 픽셀값을 평활화된 픽셀값으로 변형시켜주는 기법이다. * Histog..

Program/OPEN_CV 2022.05.11

[Open CV] 기본적인 영상처리 기법 _ 영상의 명암비 조절

2022.05.10 금일은 영상의 명암비 조절에 관한 강의였다. 명암비는 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이이다. ( Contrast , 대비 ) 라는 용어와도 같은 의미이다. 위 이미지처럼 명암비가 높을 수록 좀 더 선명한 영상을 가질 수 있다. 영상의 명암비를 조절하기 위해서는 아래와 같은 명암비 조절 함수를 사용할 수 있다. 저번 강의에서는 픽셀값에 일정 정수값을 더해서 밝기를 조절하는것이 아닌곱셈으로 대비값을 조절하는 함수이다. dst ( x , y ) = saturate ( s * src ( x , y ) ) 입력 영상에 s라는 기울기를 곱해서 출력할 수 있는데 이와 같은 함수를 사용하게 되면 0.5. or 2.0 을 곱했을때 명암이 아닌 밝기값만 너무 어두워지고 밝아지는 현..

Program/OPEN_CV 2022.05.10

[Open CV] 기본적인 영상처리 기법 _ 히스토그램 분석

히스토그램은 영상처리에서만 사용하는 용어가 아닌 통계에서의 데이터 분포를 나타내는 용어이다. 영상에서는 픽셀값의 분포를 나타내는 방법이다. 위의 이미지를 보면 해당 그레이스케일의 Value를 모아서 분포를 표현해놓은 값이다. 가로축은 각각의 픽셀값을 의미하는데 이를 bin이라고 한다. 보통 GrayScale은 255까지 있다. 정규화된 히스토그램 이라고 부르는 표현이 있는데 ( Normalized histogram ) 이는 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어 준것이다. 이를 사용하는 이유는 같은 영상의 크기가 다를때는 분포가 달라질 수 있기 때문에 사용하는 방법이다. 이는 기존의 히스토값을 확률로 변환하여 나타낼 수 있다. 보통 영상은 히스토그램을 보고 밝은영상인지 어두운영상인지를 구분할 수..

Program/OPEN_CV 2022.05.10

[Open CV] 기본적인 영상처리 기법 _ 컬러 영상과 색 공간

이 전 강의에서도 많이 다뤘지만 다시한번 COLOR에 대해서 다뤄보자면 컬러영상은 3차원 numpy.ndarray 로 표현된다. 즉, 3차원 행렬로 표현되는 걸 알 수 있다. 이는 Width Height 3Color ( B , G , R ) 순의 행렬로 표현될 수 있다. 예를들면 img1 = cv2.imread( 'lenna.bmp', cv2,IMREAD_COLOR ) 라고 하는 OpenCV함수를 이용해 이미지를 읽을수있고 img2 = np.zeros((480,640,3), np.uint8) 이라는 Numpy를 사용하여 비어있는 영상 ( 버퍼 )를 만들수도 있다. 그리고 GrayScale 로 불러와진 영상을 Color 영상으로 전환시킬 수도 있는데 이도 OpenCV 함수인 cvtColor 함수를 사용해서..

Program/OPEN_CV 2022.05.08
반응형