본문 바로가기
Theory/Image Processing

01 픽셀값 다루기 (22.09.09)

by Orangetasteboy 2023. 6. 21.

영상 신호와 배열

  • 영상신호 : 2차원 좌표 (y, x)에서의 밝기값 → I(y,x)
  • 2차원 배열 : img[y][x]
    • 첫번째 index가 y 좌표임에 유의

7 x 10의 해상도를 가진 영상 사례

  • 영상신호의 저장을 위한 2가지 방법
    • 2차원 배열을 이용한 영상 선언
    • 2차원 포인터를 이용한 영상 선언

 

  • 2차원 배열을 이용한 영상 선언
    • 7x10 크기 영상 (높이/행 = 7, 폭/열 = 10)을 위한 선언
int img[7][10];

 

  • 좌표 (y, x)=(3,4)에 위치한 픽셀값의 변경
img[3][4] = 100;

 

  • 2차원 포인터를 이용한 영상 선언
    • 7x10 크기 영상 (높이 = 7, 폭 = 10)을 위한 선언
int** img_ptr = (int**)IntAlloc2(7, 10);
 
  • 좌표 (y, x)=(3,4)에 위치한 픽셀값의 변경
    • 2차원 배열을 사용하는 경우와 완전히 동일함
img_ptr[3][4] = 100;
 

 

  • img_ptr이 더 이상 사용되지 않는 지점에서 메모리를 해제 권장
intfree2(img_ptr, 7, 10);

 

  • 영상의 픽셀값의 범위
    • Gray 영상의 경우 : 0 ~ 255
    • RGB 칼라 영상 : R, G, B 각각 0 ~255

영상 읽기 & 쓰기

  • 영상읽기 & 쓰기 함수
int** ReadImage(char* filename, int* height, int* width)
void WriteImage(char* filename, int** img, int height, int width)

 

  • 활용 사례
int** img = ReadImage(“Barbara.png”, &height, &width);
writeImage(“wr_test.pgn”, img, height, width);

 

void main()
{
   int height, width;
   int** img = (int**)ReadImage("barbara.png", &height, &width);
   ImageShow("영상보기", img, height, width);
   WriteImage("wr_test.png", img, height, width);
}

영상 이진화

  • 문턱값 이상은 255, 미만은 0으로 픽셀값을 변환
    • 여기서 I는 픽셀값으로서 좌표 (y, x)에서의 밝기값

  • 사례

'Theory > Image Processing' 카테고리의 다른 글

06 평균 필터 (22.10.14)  (0) 2023.06.21
05 히스토그램 평활화 (22.10.07)  (0) 2023.06.21
04 스트레칭 (22.09.30)  (0) 2023.06.21
03 클리핑 (22.09.23)  (0) 2023.06.21
02 영상 혼합 (22.09.16)  (0) 2023.06.21

댓글