[MATLAB] 이미지 다루기

YJ·2024년 12월 8일

MATLAB 공부하기

목록 보기
13/19
post-thumbnail

이미지 다루기

  • 이미지 데이터는 행렬 형식으로 표현된다.
  • 이미지 채널에 따른 분류
    • RGB 이미지(컬러)
      • 3개의 채널로 구성 (Red, Green, Blue)
      • 크기: M×N×3 (가로, 세로, 색상 채널)
    • Grayscale 이미지(흑백)
      • 단일 채널로 구성
      • 크기: M×N (가로, 세로)
  • 픽셀 값의 범위 : 0 ~ 255
  • 따라서 matlab에서 이미지를 행렬 형식으로 불러와 픽셀 값을 조작하거나 분석할 수 있다.

importdata()

  • 파일에서 데이터를 불러오는 함수이다.

예시

A = importdata('image.jpg');
image(A)

이미지 조작하기

  • 행렬 형태로 가져올 수 있기 때문에, 값을 변경하면 간단히 이미지 조작이 가능하다.

예시

전체 순회

특정 조건에 따라 각 채널(R, G, B)픽셀 값을 변경한 뒤 이미지를 출력하는 작업을 수행

clear; clf;
A = importdata('image.jpg');
[n m k] = size(A);
for i = 1:n
    for j = 1:m
        if A(i, j, 1) > 150 & A(i, j, 1) < 190 % R
            A(i, j, 1) = 0; 
        end
        if A(i, j, 2) > 120 & A(i, j, 2) < 180 % G
            A(i, j, 2) = 72;
        end
        if A(i, j, 3) > -1 & A(i, j, 3) < 40 % B
            A(i, j, 3) = 186;
        end
    end
end
image(A)

  • n×m 크기의 이미지에서 전체 픽셀을 순회하며 조건에 맞는 경우 값을 변경하는 함수이다.
    • 특정 픽셀에 접근하기 위해서는 image(row, column, channel)과 같이 행렬 인덱싱을 이용한다.

일부분만 순회

clear; clf;
A = importdata('image.jpg');
[n m k] = size(A);
for i = 1:200
    for j = 1:m
        if A(i, j, 1) > 150 & A(i, j, 1) < 190 % R
            A(i, j, 1) = 0; 
        end
        if A(i, j, 2) > 120 & A(i, j, 2) < 180 % G
            A(i, j, 2) = 72;
        end
        if A(i, j, 3) > -1 & A(i, j, 3) < 40 % B
            A(i, j, 3) = 186;
        end
    end
end
image(A)

  • for문에 값을 조정하여 특정 부분의 픽셀만 변경하는 것도 가능하다.
profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글