반응형

Octave : 이미지 출력과 필터 연산

간단한 소개

 다양한 분야에서 연구를 수행할 때 사용되는 대표적인 도구로 Matlab이 사용되고 있다. 초기에는 그저 수학용 툴이었지만, 어느센가 확장을 거듭하여 신호처리, 영상처리, 시뮬레이션 등 다양한 분야에서 사용되게 되었다.

 문제는 이러한 다양하게 활용이 가능한 툴인 만큼 고가의 제품이다. 덕분에 대학이나 대기업이 아닌 이사아 중소기업에서는 구매하기 어려운 가격이다. 대신 Matlab 만큼은 아니지만, 같은 문법과 같은 스크립트 파일을 비슷한 성능에 실행을 할 수 있는 툴이 나온 것이 Octave 이다. 흔히 GNU Matlab이라는 키워드로도 검색이 된다.


준비물

lena.jpg 과 같은 샘플 이미지 파일, octave


이미지 그라디언트

m파일로 작성하지 않고 octave의 프롬프트창(혹은 입력커멘드 창)에서 우선 이미지가 있는 폴더로 이동을 해야 한다. 쉘 처럼 cd 명령어를 통해 이미지가 있는 폴더로 이동하자.


sample = imread("lena.jpg");
pkg load image
I = rgb2gray(sample);
# double 형으로 형변환 역할
S = conv2(I, ones(5, 5)/25, "same");
[Dx, Dy] = gradient(S);
imshow(sample);
figure(2);
imshow(I);
figure(3);
imshow(Dx);
figure(4);
imshow(Dy);



결과물



openCV를 사용해봤다면, 몇몇 함수는 이름이 비슷해서 익숙할 것이다. 필터링을 한거지만, 행렬 연산을 전문으로 하는 프로그램 입장에서는 행렬연산을 하는 것이기 때문에 사실 필터링을 위한 다른 툴이 필요하지는 않는다.


여기서는 Dx, Dy를 그래도 출력했지만, 분석시에는 두 값을 이용해 기울기값을 사용한다. 이에 대한 자세한 내용은 "디지털 영상처리"같은 서적을 참조할 것


참고자료

octave 위키 문서

GNU octave 이미지 프로세싱 참조자료



반응형

+ Recent posts