반응형

Program 135

[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

[Open CV] 기본적인 영상처리 기법 _ 영상의 산술 및 논리 연산

이미지처리에서 산술연산이라고 하는것은 두개의 영상의 같은 위치에 있는 픽셀들을 서로 더하거나 빼는 등의 연산을 말한다. 곱셈과 나눗셈의 연산도 하기는 하지만 흔히 하는 연산은 아니기때문에 덧셈과 뺄셈을 기본으로해서 알아본다. - 덧셈연산 2개의 영상을 덧셈 연산할때 같은 위치에 있는 픽셀값을 더하게되면 픽셀값이 255를 넘어가는 경우가 흔하기때문에 Saturate 연산을 꼭 해줘야한다. ( 포화연산 ) dst (x,y) = saturate ( src(x,y) + src2(x,y) ) -> cv2.add ( src, scr2, dst=None, mask=None, dtype=None )를 사용하는데 저번 시간과는 다르게 src , src2에 영상을 넣어주면 덧셈연산을 실행한다.그리고 mask를 사용하게 되..

Program/OPEN_CV 2022.05.07

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

금일부터 시작되는 강의는 기본적인 영상 처리기법에 관한 강의로 기초 사용법이 마무리 된 이후 실질적인 영상처리기법에 관한 내용들을 주로 다루는 것 같다. 영상의 화소 처리 기법 ( Point processing ) 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 픽셀값으로 설정하는 연산이다. - dst(x,y) = f(src(x,y)) ( src는 입력이미지 dst는 출력이미지 ) 여기서 알 수 있듯이 입력영상에 어떠한 함수처리를해서 ( 변환함수 ) 출력에 다시 입력시켜주는것이다. 함수처리에도 다양한 함수가 존재하는데 항등함수 , 입력영상 대비 밝아지는 출력영상 그래프의 함수 , 이진영상변환 함수등이 있다. 밝기 조절 수식중 하나인 dst(x,y) = src(x,y) + n 을 보면 입력영상 대비 +n..

Program/OPEN_CV 2022.05.06

[Open CV] OpenCV-Python 기초 사용법 _ 실전코딩

위 내용은 2개의 동영상을 재생하고 전환할때 애니메이션 효과를 넣는 이펙트에 관한 강의이다. 동영상 전환 이펙트에는 많은 기능들이 있는데 페이드 인 , 페이트 아웃 , 디졸브 , 밀기 , 확대 등의 기능들이 있다. 위 기능들을 구현하기 위해서 필요한 기능들은 두개의 영상을 동시에 열고 첫번째 동영상의 마지막 몇개의 프레임과 두번째 동영상의 처음 몇개의 프레임을 합성하는 기능 마지막으로 그 영상을 다시 저장하는등의 기능이 필요할 것이다. 아래 코드를 보면서 다시 설명하고자 한다. 일단 실행폴더에 저장되어있는 video1,2 .mp4 파일을 로드하여 cap1,2 의 변수에 저장시킨 뒤 예외처리를 해주는 기본적인 코드로 작성되었다. 그리고 두영상의 크기와 FPS는 같다고 가정한다. ( 1280 * 720 / ..

Program/OPEN_CV 2022.05.05

[Open CV] OpenCV-Python 기초 사용법 _ 연산시간 측정 방법

머신 비전 산업을 보면 가장 중요한게 있는데 그건 연산 시간이다. 어떤 제품의 검사나 검사결과 도출까지의 시간 및 결과들이 그 산업들의 이익과 직결되기때문에 가장 짧은 시간에 가장 정확하게 검사하고 그 결과를 도출해낼 수 있는 능력을보면 머신비전 업체의 능력을 가늠할 수 있다. 일단 컴퓨터 비전은 대용량 데이터를 처리하고있기때문에 매 단계에서 연산 시간을 측정하고 그 시간을 관리해줄 필요가 있다. 전체 알고리즘 중 어떤 한 알고리즘의 영상처리시간이 늦어지는 병목현상이 일어나게 된다면 전체적으로 연산처리시간이 늘어나기때문에 주의할 필요가 있다. 그래서 OpenCV에서는 연산시간을 측정할 수 있는 함수가 있다. - 연산시간 측정 ( cv2.TickMeter ) tm 은 cv2.TickMeter의 객체이고 t..

Program/OPEN_CV 2022.05.04

[Open CV] OpenCV-Python 기초 사용법 _ 트랙바 사용하기

트랙바라고 하는 것은 사용자가 지정한 범위의 값을 컨트롤할 수 있는 컴포넌트라고 할 수 있다. 트랙바 또는 슬라이더 컨트롤이라고도 불린다. 그리고 OpenCV에서 제공하는 유일한 그래픽 사용자 인터페이스라고 볼 수 있다. 트랙바를 사용하기 위해서는 cv2.createTrackbar 라는 함수를 사용해야한다. ( trackbarname, windowname, value, count, onchange ) 의 인자로 이루어져 있다. value는 트랙바의 위치 초기값이고 count 는 트랙바의 최대값 ( 최소값은 항상 0으로 고정 ) onCange는 트랙바의 위치가 변경될때 마다 호출할 콜백함수의 이름이다. 그리고 트랙바 생성도 마찬가지로 imshow 를 한뒤에 createTrackbar를 호출해주어야한다. 위..

Program/OPEN_CV 2022.05.03
반응형