안녕하세요. 지난 포스팅의 디지털 영상 처리 - 스무딩과 샤프닝에서는 칼라 영상에서의 스무딩과 샤프닝 연산을 정의하는 방법에 대해서 알아보았습니다. 그리고 어떤 칼라 공간에서 처리를 하느냐에 따라서 그 결과가 달라짐을 알았습니다. 오늘은 실제로 MATLAB을 이용해서 구현해보도록 하겠습니다. 전체 main 코드는 아래의 링크를 참조해주시길 바랍니다.
먼저, 처리할 영상을 불러오도록 하겠습니다. 불러오는 함수는 항상 imread() 함수를 이용하면 됩니다.
RGB = imread('../../example/Ch6/Fig0638(a)(lenna_RGB).tif');
그리고 MATLAB에서는 칼라 공간 변환을 위한 다양한 함수를 제공해주고 있습니다. 이번에는 RGB 칼라 공간을 HSV 칼라 공간으로 변환하는 rgb2hsv(RGB) 함수를 이용하도록 하겠습니다. 또한 그 역변환으로 hsv2rgb(HSV) 함수 역시 제공하고 있습니다. 이 함수를 이용해서 아래와 같이 RGB 칼라 성분과 HSV 칼라 성분을 각가 보도록 하겠습니다.
이제 스무딩과 샤프닝을 해볼텐데, RGB 칼라 공간에서는 각 칼라 성분에 모두 적용하고 HSV 칼라 공간에서는 V 칼라 성분에만 적용해보도록 하겠습니다. HSV 칼라 공간에서 주의할 점은 어떤 연산을 취한 뒤 꼭 hsv2rgb(HSV) 함수로 RGB 칼라 공간으로 변환해야한다는 점입니다. 그리고 그 결과는 0~1 사이의 값이기 때문에 255를 곱한뒤 uint8(array)로 0~255의 값을 같도록 바꾸어주어야 합니다.
위 영상은 imgaussfilt(A, sigma)를 통해 가우시안 스무딩 필터링을 취한 결과이고 아래 영상은 imsharpen(A)를 통해 언샤프닝 필터링을 한 결과입니다. 그리고 가장 오른쪽 영상은 RGB 칼라 공간, HSV 칼라 공간에서 연산을 취했을 때는 차이를 보여주고 있습니다. 보시면 어떤 칼라 공간에서 연산을 취하느냐에 따라서 그 결과가 달라진다는 것을 알 수 있습니다.
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 칼라 영상의 노이즈 (0) | 2021.07.30 |
---|---|
디지털 영상 처리 - 칼라 기반 영상 분할 (1) | 2021.07.28 |
디지털 영상 처리 - 스무딩과 샤프닝 (0) | 2021.07.23 |
디지털 영상 처리 - 칼라 변환 (0) | 2021.07.19 |
디지털 영상 처리 - 풀-칼라 영상 처리 기초 (0) | 2021.07.18 |