[OpenGL]Image Processing 2

후이재·2020년 10월 22일
1
post-thumbnail

기초적인 이미지 처리 알고리즘

  1. The Grey level histogram
  2. Grey level histogram equalization
  3. Point operations
  4. Algebraic operations

The Grey level histogram(GLH)

  • 보통 정규분포를 따름. 밝기에 따른 픽셀분포를 나타냄
  • pixel당 RGB정보를 밝기정보로 교체(0~1) => byte로 저장(0~255)
  • 사진이 어두울 경우, 왼쪽으로 쏠린 분포.
  • 사진이 밝을 경우, 오른쪽으로 쏠린 분포.
    => 이럴경우, 몰린부분의 픽셀을 나누어 펼쳐야함. 결과적으로 정규분포를 따르도록

Image Segmentation

  • 어두운부분과 밝은부분 나누기.
  • 두 구역의 구분을 지을 Threshold를 잘 잡아서 물체를 분리한다.

Grey level histogram equalization

  • non-linear grey scale transformation을 재배치하는것
  • histogram의 누적합으로 histigram을 만든 후에(기울기 1 형태), 전부 비슷하게 조절한다.(y = 1 형태)
    => 흐린사진을 선명하게 표현할 수 있다. 왜? 밝기마다 픽셀을 골고루 분포하도록 했으니.

Point operations

  • 각 점에 대해 다른색을 가지도록
  • 포토샵에서 곡선을 통해 밝기를 조절하는 그것.
  • input에 대한 output을 threshold를 통해 제어

Algebraic operations

  • 2개의 이미지를 +(Addition)-(Subtraction)*(Multiplication)/(Division)
  • Addition: 노이즈가 많은 이미지에 블러된이미지를 더하면 노이즈가 감소!
  • Subtraction: background빼주면 background에서부터 분리!/ 움직임 감지에도 사용
  • Multiplication: Mask를 씌워서 원하는부분만 보이도록
  • Division: background부분을 0에 가깝게 나누어 원하는 부분만 보이게

Noise Reduction

  • 어둡거나 카메라이상이있을 때 Noise가 발생하곤한다.
  • N개의 이미지가 있다면 N개의 평균으로 출력. N은 8로 제한됨.
  • Local Operation은 주변점과의 조합으로 수행가능.
    1. Image smoothing
    1. noise cleaning
    2. edge enhancement
    3. boundary detection
    4. assessment of texture

Local Operations for Image Smoothing

  • 자신의 위, 아래, 왼, 오른 pixel의 평균 => 색의 평균화
    => Noise감소, 큰 변화만 남게됨.

Filters

  • low pass filter는 이미지를 부드럽게 만드는 필터로, 블러라고 생각하면 된다. 즉 노이즈를 줄인다.
  • high pass filter는 Fourier Transform이 그렇듯 주변과의 차이를 남겨서 이미지를 선명하게 한다.
  • median filter는 low pass와 다르게, 블러링 없이 노이즈를 줄여준다.

operator

average, sobel, laplacian(low pass), high pass

Frequency Methods

  • Fourier Transform
  • 주파수개념: 이미지에선 특정 pattern이 자주반복되면 Frequency가 높은것
  • Spatial Frequency: x축 방향으로의 밝기변화를 탐색, 많이 변화하면 주파수가 높아짐

Fourier Filtering

  • Discrete Fourier Transform 함수
  • 이미지를 복원하거나 압축할 때. Noise해석에 많이 사용.
  • 일정영역에 mask 더하거나 빼기: 없어진 부분을 복원하거나 nois를 없앨 수 있음
  • 구겨진 영역 삭제
  • 2D를 3D로. 선을 그리면 3차원으로 만들어줄 때.

Image Analysis

Segmentation(분리)

  • 점단위로 분석, 주변 색 밝기따라 그래프 표현, Threshilding에 따라 객체 나누기
  • t보다 작으면 0, 작거나 같으면 255 이런 방식
  • 이를 통해, Edge detection, Template matching, Boundary tracking이 가능함

Adaptive Thresholding

  • 햇빛이 강하다거나, 노이즈가 있다거나, Threshold가 애매해진 경우, 사용
  1. 그냥 그대로 두고, 각 곡선의 꼭대기를 잡아서 그 중앙점을 Threshold로 잡는다.
  2. 전체 큰 기울기를 찾아, x축의 모양으로 주욱 내려준다. 그리고 그 중앙점을 Threshold로 잡는다.

Edge Detection

  • High pass filter(Gradiant, Laplacian)이용.
  • Edge를 위한 filter, x, y, z를 찾아야함. (Sobel operator)
  • 문제는 noise가 방해할지도, 색이비슷하면 잘 찾지못할지도..

Template ,matching

  • 원하는 모양찾기
  • 원래 픽셀 색상 * template 색의 결과의 합이 커질수록, 매칭이 된것.
  • 특정 feature를 찾는데 좋음

Boundary tracking

  • Edge를 뽑아서 Boundary trcking
  • Edge를 따라가서 시작점과 비슷한 위치 => boundary
  • 이 알고리즘은 GPU에서 실행하기 어려움. 왜? 다른점 계산결과 또는 내점을 계산한 결과가 다른계산에 적용되어야하기 때문.

Connectivity, Connected Objects

  • 4-connectivity: 주변 4개 점 연결까지의 연결 한 물체
  • 8-connectivity: 주변 8개 점 연결도 한 물체

Line Segment Encoding

  • Scan line으로 떨어져있을 때는 다른 물체로 구분하다, 두 물체가 붙으면 하나로 생각.

Representation of objects(표현)

Object Membership Map(OMM)

  • GPU에서도 간단.
  • 특정물체 찾기 쉬움. 같은 물체는 같은 정수로 표현됨
  • 단 이것도 Boundary Chain code는 GPU 어려움

Size measurements

  • area 계산. 같은구역 더하기.

Length, Width

  • 길이, 폭 계산 합은 어려움.
  • 최소, 최대는 병렬 프로그램을 사용하면 가능

Number of holes

  • 오일러공식을 사용하여 edge, hole이 몇개인지 알 수 있음

Feature 찾기

  • Rectangularity: 직사각형에 가까운지?
  • Aspect ratio: 비율이 어떠한지?
    => 길이를 이용하면 됨
  • Circularity: 곡면이 균일한지?
    => 면적대비 boundary 길이 계산

Texture Analysis

  • 균일한 pattern인지?
  • 4도에 뭐가 있고, 10도에 뭐가있고 이런식으로 pattern을 찾아 진행

총정리

  • GPU를 써야해! 1/500초만에 4K(4000 * 2000 이상) 이미지를 픽셀당 전부 계산할 수 있어
  • 그러니까 GPU로 구현할 수 있는것, 없는것을 구분할 줄 알고
  • 구현하기 어렵다면, 어떻게 하면 될까를 생각해보자
profile
공부를 위한 벨로그

0개의 댓글