CS/디지털영상처리

[디지털영상처리] Intensity Transformation(2)

nowkoes 2023. 10. 8. 00:00

본문

Piecewise-Linear Intensity Transformation

 

 선형 변환을 여러 구간으로 나누어 적용하는 구간별 선형 변환(Piecewise-Linear Transformation)은 각 구간에서 다른 선형 변환을 적용할 수 있으므로, 이미지의 특정 영역이나 특정 강도 값을 강조하거나 약화시키는 데 유용하다. 만약 이미지의 밝기가 특정 영역에만 집중되어 있을 때, 전체 밝기 범위를 활용하여 대비를 늘리는 Contrast Stretching 방법이 가능하고, 이미지에서 관심 있는 특정 밝기 범위를 강조하고, 나머지는 약화시키는 Gray-level slicing도 가능하다. 

 

Ig = rgb2gray(imread("example.jpg"));
[M,N] = size(Ig);
Ip = zeros(M,N);

for i = 1:M
	for j = 1:N
    	Ip(i,j) = piecewise(Ig(i,j));
    end
end

figure(1); 
subplot(1,2,1); imshow(Ig, []); title("original");
subplot(1,2,2); imshow(Ip, []); title("picewise");

function out = piecewise(in)
    if in <= 96
        out = in/3;

    elseif in <= 160
        out = 3 * (in - 96) + 32;

    else
        out = 0.3263 * (in - 160) + 224;

    end
end

 

 picewise의 구간을 다음과 같이 정의하였을 때, picewise transformation을 구현한 코드다. 그래프에서 y축의 값을 0부터 96, 96부터 160, 160부터 255까지로 나누었을 때 출력을 다음과 같이 나누었다. 


Thresholding Transformation

 

 영상의 픽셀 값을 기준 값(Threshold)과 비교하여, 이진 이미지를 생성하는 임계 변환(Thresholding Transformation)이다. 즉, 주어진 임계값보다 큰 픽셀 값은 1, 다른 값은 0으로 변환한다. 이를 수식으로 표현하면 다음과 같다.

 

 

 일반적으로 임계 변환은 객체와 배경을 분리하거나, 노이즈를 제거, 특성을 강조하기 위해 사용된다. 

 

Ig = rgb2gray(imread("example.jpg"));
th = 150;
Ith = Ig > 150;

figure(1);
subplot(1,2,1); imshow(Ig, []);
subplot(1,2,2); imshow(Ith, []);

 

 해당 코드는 임계값 150을 기준으로, 150보다 크면 1, 작으면 0으로 설정하였다.


Bit-plane Slicing

 

 Bit-plane Slicing디지털 이미지에서 이미지의 각 픽셀값을 이진수 형태로 표현하고, 이들 비트를 개별적인 이미지로 분리하는 과정을 의미한다. 각각의 분리된 이미지는 원본 이미지의 한 비트 평면(Bit-plane)을 나타낸다.

 

 여기서 각 비트 평면은 원래 이미지의 특정 비트 위치의 값을 갖고 있다. 예를 들어, 8비트 그레이스케일 이미지의 경우, 각 픽셀은 0부터 255 사이의 값을 가질 수 있다. 이 값을 이진수로 표현하면 8비트로 나타낼 수 있고, 이들 각 비트를 하나의 비트 평면으로 볼 수 있어 다음과 같이 수식으로 표현할 수 있다.

 

 

Ig = rgb2gray(imread("example.jpg"));
[M,N] = size(Ig);
Ib = zeros(M,N);

b = zeros([size(Ig), 8]);
for i = 1:8
    b(:,:,i) = double(bitget(Ig, i));
end

for i = 1:8
    Ib = Ib + b(:,:,i).*2^(i-1);
end

figure(1);
for i = 1:8
	subplot(2,4,i);
    imshow(b(:,:,i), []);
end

figure(2);
imshow(Ib, []);

 

 왼쪽의 이미지는 오른쪽 이미지를 8개의 비트 평면으로 나눈 것이다. 비트가 낮을수록 정보를 많이 포함할 수 없어 대부분 노이즈가 낀 이미지고, 비트가 높을수록 이미지의 필수적인 정보를 포함하는 것을 확인할 수 있다. 이를 이용해 LSB인 Bit-plane 1에는 워터 마크와 같이 정보를 숨길 수 있다는 특징이 있다.

 


요약

변환 도메인
- 이미지를 다른 형태로 변환시켜, 특정 영역에서의 특성을 분석하고 처리하는 방식

공간 도메인
1. 정의: 이미지 평면에서 픽셀들의 직접적인 밝기 값을 다루고 조작하는 것
2. 강도 변환
 a. 정의: (x, y) 주변의 픽셀 크기를 1x1로 가정하고, 픽셀값을 변환하는 것
 b. 종류
  - 선형 강도 변환: 밝기를 반전(L - 1 - r)시키거나, 그대로 출력하는 등 이미지를 선형적으로 처리하는 것
  - 로그 강도 변환: 밝기에 로그(clog(1+r))를 씌워 출력. 낮은 강도의 픽셀값에 대한 출력 강도를 크게 증가시키거나, 어두운 영역의 세부 정보를 확장시킴
  - 감마 강도 변환: 감마(cr^gamma) 값을 기준으로 1보다 큰 경우 밝게, 1보다 낮은 경우 어둡게 출력하여 영상의 전체적인 명암 대비를 조절
  - 구간별 강도 변환: 각 구간마다 함수를 다르게 적용하여 출력하여 이미지의 특정 밝기 범위를 강조하거나 약화시킴
  - 임계 강도 변환: 특정 값을 기준으로 이진 이미지를 출력하여, 객체 검출 등에 활용
  - 비트 평면: 이미지를 n개의 비트 평면으로 나눔. 각 비트 평면이 원본 이미지의 어떤 정보를 포함하는지 분석하고, 필요한 비트 평면만을 사용하여 이미지를 재구성

 

반응형