본문 바로가기
MRI이론

디지털 영상처리에서의 프로그래밍 언어

by befriend 2023. 4. 4.

디지털 카메라

디지털 영상처리에서의 프로그래밍 언어 종류

 

 

가. MATLAB

 

첫 번째로 알아볼 프로그래밍 언어는 MATLAB이다. MATLAB에는 디지털 영상처리를 위한 많은 함수가 내장되어 있고, 툴박스 또한 많이 있다. Image Processing Apps라고 해서 다양한 영상처리 앱들도 제공한다. 색깔 조정, 밝기 조정, 사이즈 조정 등의 기본적인 작업을 할 수 있는 것은 물론, 더 나아가서 노이즈 제거 등의 어려운 작업도 가능하다. 영상 데이터값을 조정해서 시각적인 해석을 가능하게 하는 기능이 Image Enhancement이다. 노이즈 제거 및 흐릿함을 개선하는 등의 기능이 이에 해당한다. 
확실히 오른쪽 사진이 흐릿함이 많이 완화되어 보기가 쉽다. 이러한 것이 Image Enhancement의 

좋은 예시이다.
타일 위에 앉아있는 강아지 사진에, 코딩을 통하여 영상 분할을 한 결과물이다. 완전히 정확하다고는 

할 수 없지만, 꽤 좋은 결과물을 얻은 것을 확인할 수 있다.


나. Python

파이썬도 디지털 영상처리를 위해 사용하는 경우가 많다. 파이썬에 내장된 opencv패키지를 주로 사용하여 

영상처리를 한다. 파이썬에도 영상처리를 위한 수많은 함수가 존재하기 때문에 이를 통해 블러링, 노이즈 

제거, 색 변경 등의 영상처리가 가능하다. 
우선 영상의 노이즈를 제거하는 기능에 관해서 설명하자면, 필터를 적용하여 노이즈를 제거하는 것이다. Hybrid median 필터를 많이 사용한다. Median필터의 모서리가 뭉뚝해지는 단점을 보완한 필터이다.  

위 그림은 Hybrid median 필터의 동작 방법이다. 우선 빨간색 부분의 중간값, 파란색 부분의 중간값, 현재 

픽셀값 총 3가지의 값을 구한다. 그 후 3개의 값 중에서 중간값이 최종 픽셀값이 되는 것이다. 위 그림에서는, 빨간색 부분의 중간값은 4, 파란색 부분의 중간값은 6, 현재 픽셀값은 5이므로 최종 픽셀값은 4, 5, 6의 

중간값인 5가 된다.
파이썬 코딩을 통하여 Hybrid median filter를 적용하면 아래와 같은 결과물을 얻을 수 있다. 
왼쪽은 노이즈가 적용된 사진이고, 오른쪽은 Hybrid median 필터를 적용한 후이다. 원본 사
진과 거의 똑같을 정도로 노이즈가 제거되는 것을 확인할 수 있다. 이러한 작업 말고도, 당연히 사진 크기 조정이나 색 대비 증가, 흑백 컬러 변화 등의 간단한 작업은 쉽게 처리할 수 있으므로 파이썬도 디지털 

영상처리에서 많이 사용된다.


다. Visual C++

마지막으로 알아볼 영상처리를 위해 사용되는 프로그래밍 언어는 Visual C++이다. Visual C++로도 

영상처리가 가능하다. C++에서도 파이썬과 마찬가지로 OpenCV를 많이 사용한다.
Visual C++로도 이미지에 필터를 적용할 수 있다. 여러 가지 필터들이 있지만, 그중에서 평균 필터에 관해서 설명하고자 한다. 노이즈 제거를 위해 사용하는 가장 쉬운 방법은 영상을 흐리게 하는 것이다. 평균 필터의 원리는 간단하다. 마스크 범위 내 모든 값의 평균을 구해, 그 값이 중앙 픽셀에 저장되는 것이다.  
평균값 필터를 적용하면 영상을 부드럽게 만들 수 있고 노이즈 제거의 효과가 있지만, 과도하게 사용할 경우 초점이 흐려진 듯한 결과물이 나올 수 있다.  


5. 결론

지금까지 디지털 영상처리 기술이 사용되는 분야, 간단한 예시들 및 응용되어 어떻게 사용되고 있는지에 

대해서 알아보았다. 생각보다 훨씬 더 많은 분야에서 영상처리 기술이 사용된다는 것을 알 수 있었고, 

처음에는 일상생활과 큰 연관은 없는 기술이라고 생각했다. 하지만 자료를 찾아보고 관심을 갖고 알아보다

 보니 항상 영상처리 기술과 함께 살아간다는 것을 깨달았다. 위에서 설명한 분야 이외에도 상당히 많은 분야에서 디지털 영상처리 기술은 사용되고 있고, 앞으로의 발전도 무궁무진하다. 앞으로 더더욱 발전될 

영상처리 기술이 우리 삶에 어떤 영향을 미칠지 궁금하다.
또한, 디지털 영상처리가 가능한 프로그래밍 언어에 대해서도 알아보았는데, 상당히 많은 언어가 디지털 

영상처리기능을 지원하고 있었다. 단순히 사진의 크기를 조정한다거나, 흑백으로 바꾸는 등의 간단한 

작업 말고도 노이즈 제거, 합성, 디블러링과 같은 작업도 지원하고 있었다. 1학년부터 거의 학기마다 여러 

가지 프로그래밍을 접했는데, 수준 높은 영상처리가 가능한지는 이번 강의를 듣고 처음 알게 되었다. 

그래서 더욱 흥미가 생기고, 앞으로 더 알아가고 싶다.

댓글