3eung_h10n.log
로그인
3eung_h10n.log
로그인
컴퓨터비전 - 3(영상 처리)
박승현
·
2023년 9월 13일
팔로우
0
컴퓨터비전
0
컴퓨터비전
목록 보기
3/15
영상 처리
히스토그램
주어진 영상에서의 명암값의 분포를 나타낸 막대 그래프
히스토그램 계산
0~L 사이의 명암값이 각각 영상에 몇번 나타나는지 표시(L은 보통 255이지만 다를수도 있음)
히스토그램을 위한 256칸 짜리 배열을 0으로 초기화
영상의 화소(픽셀)의 각각에 대해 명암값을 구함
구한 명암값을 인덱스로 사용해서 히스토그램 배열에 카운팅
영상의 크기대로 나누면 정규화(0~1로 표현)
L이 8인 영상의 명암값 배열과 히스토그램
영상의 크기인 8x8로 나누면 정규화
h` = h/64
히스토그램 용도
영상의 특성 파악
히스토그램 평활화(Histogram Equalization)
히스토그램을 평평하게 만드는 연산
명암의 동적 범위를 확장하여 영상의 품질을 향상 시켜줌
히스토그램의 특정 영역에 모여 있으면 너무 밝거나 어두워서 잘 안보이게 됨, 이런 부분을 줄여줌
누적 히스토그램을 함수로 사용
누적 함수를 사용(누적 함수의 기울기 : 기존 히스토그램의 크기를 의미)
기울기가 큰 부분을 많이 늘려줌
순서대로 기존 명암값/현재 값/누적 값/누적 값 x L/평활화 후의 명암값
평활화 적용 예시
충분히 밝은 영상에서 평활화하면 효과가 없을 수도 있음
히스토그램 역투영과 얼굴 검출
R, G의 2차원 가우시안 분포를 활용하여 피부색을 검출
모델 얼굴의 R,G 분포 2차원 히스토그램
히스토그램과 가까우면 1, 멀면 0값을 주고(신뢰도) 명암으로 전환하면 피부색만 흰색으로 표현 가능
비슷한 색 분포를 갖는 다른 물체는 구별 못하거나 검출 대상이 여러 색 분포를 갖는 경우 오류 가능성이 있음
이진 영상
명암 영상을 흑과 백만 가진 이진 영상으로 변환
임계값
특정 구간(두 봉우리 사이의 계곡을 임계값으로 설정
임계값을 기준으로 0또는 255의 명암값을 부여해 이진화 함
오츄 알고리즘
이진화 했을 때 흑, 백 그룹 각각이 균일할수록 좋다는 원리에 근거
균일성 : 분산으로 측정(분산이 적어야 균일성이 높음)
왼쪽과 오른쪽으로 나누어서 양쪽의 분산의 합이 가장 적은 임계값을 구하는 방법
누적 히스토그램의 평균과 분산값 계산
각각 임계값을 기준으로 왼쪽과 오른쪽의 누적 히스토그램과 그것의 평균, 분산
임계값 t는 0부터 L까지 전부다 계산해본 뒤 합의 최솟값을 구함
효율이 안좋음
T-1번째의 계산 결과(평균과 분산)을 T번째에 활용하여 빠르게 계산 가능
예시
연결요소
화소의 연결성
상하좌우(4-연결성), 상하좌우 및 대각선(8-연결성), 가장자리에 있는 화소는 연결성을 따지지 않음
연결요소 번호 붙이기
영상의 크기만큼의 2차원 배열을 0으로 초기화
2중 for문으로 기존 영상의 픽셀을 하나씩 탐색
처음 만난 1의 값을 가진 픽셀에 라벨을 1을 부여
해당 픽셀부터 시작해서 붙어있는 모든 픽셀에 라벨 1을 계속 부여(붙어있는 픽셀은 4 or 8연결성을 기준으로 탐색)
라벨 1의 부여가 끝나면 다시 2중 for문을 돌리고 새로운(라벨 1이 부여 안된 픽셀)을 만나면 그 다음 순서의 라벨(2)을 부여
처음 2를 부여받은 픽셀과 붙어있는 픽셀에게 라벨 2를 부여
범람 채움
스택 오버플로우 방지
가장자리의 픽셀에서 그 상하좌우에 없는 인덱스에 접근을 시도 할 수도 있음(스택 오버 플로우)
가장자리의 바깥쪽에 1픽셀 상하좌우로 0을 임의로 추가해줌(마지막엔 삭제
가장자리에서 조건문으로 밖으로 안나가게 막는것 보다 간단
박승현
KMU SW
팔로우
이전 포스트
컴퓨터비전 - 2(Color)
다음 포스트
컴퓨터비전 - 4(연산)
0개의 댓글
댓글 작성
관련 채용 정보
서북
[포토이즘] Backend developer
서북은 오프라인과 온라인을 잇는 글로벌 엔터테인먼트 플랫폼으로 성장하는 크루를 찾습니다. Java, MySQL, PostgreSQL 기술을 활용해 서버 개발 및 API 설계 업무를 맡을 수 있으며, 수평적인 문화와 다양한 복지 혜택이 매력적입니다.
타다(VCNC)
웹 프론트엔드 개발
타다와 함께 대한민국 모빌리티 시장을 혁신하며, 웹 프론트엔드 개발자로서 앱 내 화면을 개발할 기회를 잡으세요. React 및 TypeScript로 동작하는 유연한 개발 환경에서 동료들과 함께 문제를 해결하며 성장할 수 있는 기회가 기다립니다.
뱅크샐러드
웹 프론트엔드 엔지니어
뱅크샐러드는 금융과 건강 데이터를 연계하여 혁신적인 서비스를 제공하는 플랫폼입니다. 프론트엔드 엔지니어로서 React를 활용한 개발 및 크로스 플랫폼 환경에서의 최적화 작업에 참여하게 됩니다.