미니프로젝트. C언어 기반 영상처리 프로그래밍

Sireal·2021년 8월 26일
1

C

목록 보기
4/12
post-thumbnail

1. 프로젝트 개요

목표

C언어를 기반으로 4가지 디지털 영상처리 구현
화소점 처리, 기하학 처리, 화소영역 처리, 히스토그램 처리

  • 기타
    사진 : 사용하는 컨텐츠는 직접 촬영하여 사용 (본인, 개인 MCU 등)

전체적 구성


2. 화소점 처리_Point processing

  • 화소점의 원래 값이나 위치를 기준으로 화소 값을 변경하는 알고리즘

흑백 처리

  • 화소의 MAX/2보다 크면 MAX, 작으면 MIN으로 설정한다.
  • MAX(255)일 경우 하얀색, MIN(0)일 경우 검은색을 띈다.

  • 시연

평균 흑백 처리

  • 화소의 평균보다 높으면 흰색, 낮으면 검은색으로 흑백 처리
  • 일반 흑백 처리보다 더 선명한 수준의 흑백 처리를 보여준다.

산술연산 밝기 처리

  • 사용자의 입력 값에 따라 사칙연산으로 화소가 계산 됨

논리 연산 처리

  • C에는 원 마스크가 없기때문에 흑백원을 만듦
  • 임의로 만든 흑백 원(128x128) 과 논리 연산 처리를 함.

반전 처리

  • 화소의 MAX 값과 해당 화소값을 빼면 반전 처리가 된다.

감마 처리

  • 감마 : 빛의 변화를 비선형적으로 변화시킨 것
  • 감마 처리 알고리즘에 의한 식을 C로 만들어서 사용하였다.
  • Y는 출력, M은 MAX, x는 입력, g는 입력값.
  • 0.2 ~ 1.8 사이의 값으로 감마를 조절할 수 있다.

파라볼라 처리

  • 2차원 곡선그래프를 통한 변환 처리법


3. 기하학 처리_Geomatric processing

  • 화소의 위치나 배열을 변경 시키는 알고리즘

축소 처리

  • Input 가로세로 너비, Output의 가로세로 너비를 사용자의 입력 값으로 나누어서 축소시킴.

확대 처리

  • Input 가로세로 너비, Output의 가로세로 너비를
  • 사용자의 입력 값으로 곱해서 확대시킴.
    이미지에 빈 픽셀(홀)이 생겨서 품질이 안좋음.

이웃 화소 보간법을 이용한 확대 처리

  • 확대 된 Output에 해당 자리에 화소 하나만 넣어서 홀이 생김.
    이웃된 화소에 해당 화소를 나눠주면 해결됨  이웃 화소 보간법

이동 처리

  • 입력 값을 Input 가로세로에 덧셈,뺄셈을 함으로써 이동 처리가 가능하다.

회전 처리

  • 영상을 임의의 각도𝜃만큼 회전 시키는 식을 코드에 대입.
  • 회전을 시킬 뿐 자리를 고정시키지 못하여 처리영역에서 벗어남
  • 이 외에도 각도가 반시계방향으로도 바뀌는 등 문제가 많음.

중앙 회전 처리

  • 역방향 사상공식을 통하여 중앙에서 시계방향으로 회전 처리함
    백워딩을 통하여 홀을 없앨 수 있었음.

보간법을 응용한 중앙 회전 처리

  • 회전했을때의 영상의 크기를 미리 확인 한 후, Output의 중앙에서 회전을 시키도록 하는 알고리즘.

좌우 미러링

  • 좌우를 담당하는 행의 값을 MAX값에서 빼면 좌우 미러링 처리됨.

상하 미러링

  • 상하를 담당하는 열의 값을 MAX값에서 빼면 상하 미러링 처리됨.

양선형 보간법 확대 처리

  • 양선형 보간법 1줄 요약 :
  • 홀을 주위에 있는 4개의 화소 값을 통해 홀을 채우는 것.
  • 양선형 보간법은 비교적 부드러운 스케일링을 할 수 있도록 해준다.

  • (z : 찾고 싶은 값)

양선형 보간법 회전 처리

  • 양선형 보간법을 이용하여 회전 처리시 홀을 없애준다.
  • 이웃 보간법 보다는 부드러운 느낌이 살아난다.


4. 화소영역 처리_Area processing

  • 화소의 원래 값과 이웃하는 값을 기반으로 화소 값을 변경하는 알고리즘

  • 회선 마스크 : 화소영역 가중치 덩어리

  • 해당 알고리즘의 마스크만 확인하면 구현 가능

    처리과정

  • 마스크 값과 아래의 식을 통해 화소 값을 찾는다.
  • 주의 사항 : 마스크가 해당 Input의 밖을 계산하게 되면 에러 발생.

엠보싱

  • 엠보싱 : 입력 형태를 양각 형태로 보이게 하는 효과
    3x3 마스크를 이용하여 처리하였음.

평균 블러

  • 블러링 : 영상을 흐리게 하는 기술 -> 노이즈 제거용으로 사용
  • 평균 블러의 화소 값 : 화소 = 1/마스크 크기

가우시안 블러

  • 저역통과필터로 유명한 가우시안 필터를 사용한다.
  • 평균 블러에 비해 조금 더 선명하면서도 부드러운 효과를 준다.

샤프닝

  • 블러와 정반대로 대비효과를 증가시킴.
  • 흐린 영상을 선명하게 하는 효과가 있음.

  • 샤프닝(1)에 비해 (2)가 경계 부분을 더 잘 들어냄
  • 고주파 필터 샤프닝을 통해 보다 선명한 경계 부분을 처리할 수 있음.

엣지 검출

  • 엣지 : 화소가 급격히 변하는 구간
  • 수평엣지 검출 : 수평으로 된 엣지들을 감지한다.
  • 수직엣지 검출 : 수직으로 된 엣지들을 감지한다.
  • 수직, 수평 엣지 검출 : 각 엣지들을 전부 합치면 된다.

연산자 엣지 검출

  • 간단한 연산으로 엣지검출을 할 수 있다.
  • 유사연산자 : 마스크의 화소 값의 최대 값을 계산하여 도출. (3x3에서 8번 계산)
  • 차연산자 : 유사연산자보다 계산 수가 적으면서 비슷한 결과를 도출 (3x3에서 4번 계산)

1차 미분 엣지 검출

  • 영상 밝기 변화가 있는 곳만 확인하면 엣지가 검출되기 때문에 미분을 사용함.
  • 1차 미분 엣지 검출 : 로버츠, 프리윗, 소벨

로버츠 엣지

  • 속도가 빠른 장점. 돌출 값을 평균화를 못함, 노이즈에 약함.

프리윗 검출

  • 돌출 값을 잘 평균화 하지만, 수직선 엣지를 민감하게 본다.

소벨 검출

  • 돌출 값을 잘 평균화 하지만, 대각선 엣지를 민감하게 본다.

2차 미분 엣지 검출

  • 1차 미분의 민감도를 둔감시켜주는 효과를 볼 수 있음.
  • 잡음에 약하다.

라플라시안 검출

  • 잡음에 민감, 엣지들을 비교후 임계값 이상인 엣지만 검출
    * 라플라시안 회선마스크의 합은 1이어야 한다.

LOG, DOG

  • LoG (Laplacian of Gausian) :잡음에 민감한 라플라시안의 단점을 고안 가우시안 스무딩(블러링)을 한 후 라플라시안 사용.(1.가우시안 2. 라플라시안)
  • DoG : LoG의 느린속도를 보완하기위해 나옴.


5. 히스토그램 처리_Histogram processing

  • 입력되는 화소의 히스토그램을 분석하여 처리하는 알고리즘

히스토그램 표시

  • Input의 화소들을 모아서 막대그래프를 보여준다.

스트레칭

  • 이미지의 가장 밝은 화소값과 어두운 화소값을 기준으로 늘린다.
  • 콘트라스트가 낮은 이미지를 선명하게 해준다.

평활화

*이미지의 전체 화소 값을 균등하게 재배치한다
콘트라스트의 균형이 잡힌다.


6. 마무리

참고

profile
🚄계속 앞으로🚄

0개의 댓글