본문 바로가기
GD's IT Lectures : 기초부터 시리즈/프로세싱(Processing) 기초부터 ~

[프로세싱(Processing) : 고급] 컴퓨터 비전

by GDNGY 2023. 5. 1.

2. 컴퓨터 비전

2.1 영상 처리 기초

영상 처리는 디지털 이미지를 분석하고, 처리하는 기술입니다. 픽셀 값의 조작, 히스토그램 평활화, 이진화, 엣지 검출 등 다양한 영상 처리 기법이 있습니다. 프로세싱에서는 PImage 클래스를 사용하여 이미지를 불러오고, 픽셀 값을 수정할 수 있습니다.

 

2.2 특징 검출 및 추적

특징 검출은 이미지에서 눈에 띄는 특징을 찾아내는 기술로, 객체 인식 및 추적에 사용됩니다. 대표적인 특징 검출 알고리즘으로 SIFT, SURF, ORB 등이 있습니다. 특징 추적은 시간에 따라 이미지의 특징점의 움직임을 추적하는 기술입니다.

 

2.3 객체 인식 및 분류

객체 인식은 이미지에서 특정 객체를 찾아내는 기술입니다. 템플릿 매칭, 특징 기반 매칭 등의 방법이 사용됩니다. 객체 분류는 이미지 내의 객체를 미리 정의된 클래스로 분류하는 기술로, 기계 학습 및 딥러닝 기술이 주로 사용됩니다.

 

2.4 영상 합성 및 변환

영상 합성은 여러 이미지를 결합하여 새로운 이미지를 생성하는 기술입니다. 크로마키, 마스킹 등의 기법이 사용됩니다. 영상 변환은 이미지의 기하학적, 광학적 속성을 변경하는 기술로, 크기 조절, 회전, 왜곡 보정 등이 포함됩니다.


예제: 이미지에서 엣지 검출하기 (소벨 필터 사용)

PImage img, edgeImg;

void setup() {
  size(512, 256);
  img = loadImage("example.jpg");
  edgeImg = detectEdges(img);
}

void draw() {
  image(img, 0, 0);
  image(edgeImg, 256, 0);
}

// 엣지 검출 함수 (소벨 필터 사용)
PImage detectEdges(PImage src) {
  PImage dst = createImage(src.width, src.height, RGB);
  src.loadPixels();
  dst.loadPixels();

  int[][] sobelX = {
    {-1, 0, 1},
    {-2, 0, 2},
    {-1, 0, 1}
  };

  int[][] sobelY = {
    {-1, -2, -1},
    {0, 0, 0},
    {1, 2, 1}
  };

  for (int y = 1; y < src.height - 1; y++) {
    for (int x = 1; x < src.width - 1; x++) {
      float gx = 0;
      float gy = 0;

      // 소벨 필터를 사용하여 x, y 방향의 그래디언트 계산
      for (int i = -1; i <= 1; i++) {
        for (int j = -1; j <= 1; j++) {
          int rgb = src.pixels[(y + i) * src.width + (x + j)];
          float gray = (red(rgb) + green(rgb) + blue(rgb)) / 3;
          gx += gray * sobelX[i + 1][j + 1];
          gy += gray * sobelY[i + 1][j + 1];
        }
      }

      // 그래디언트의 크기를 계산하고 결과 이미지에 저장
      float magnitude = sqrt(gx * gx + gy * gy);
      dst.pixels[y * src.width + x] = color(magnitude);
    }
  }

  dst.updatePixels();
  return dst;
}

// 출력: 왼쪽 이미지는 원본, 오른쪽 이미지는 엣지 검출 결과

 

이 예제는 이미지에서 엣지를 검출하는 소벨 필터를 사용한 영상 처리 기술을 보여줍니다. 이러한 기술들을 응용하여 컴퓨터 비전 프로젝트를 수행할 수 있습니다. 또한, 객체 인식 및 분류와 같은 고급 컴퓨터 비전 기술을 습득함으로써 프로세싱을 통해 더 복잡한 문제를 해결할 수 있습니다. 이를 통해 인터랙티브 아트, 게임, 가상현실 등 다양한 분야에서 창의적인 작품을 만들어낼 수 있습니다.

반응형

댓글