본 내용은 대구가톨릭대학교 컴퓨터공학과 4학년 1학기 수업 컴퓨터 영상신호처리에 기반함
공부한 내용을 복습을 위한 정리
추가 필요 개념 또는 추가 학습내용도 올라감

제1-1장 영상처리의 개요 및 프로그램 작성함수

제1-2장 디지털 영상처리의 기초

제2장 포인트 처리

제3장 영역 처리

제4장 영상 개선과 복원

제5장 디지털 간색

제6장 기하학적 처리

제7장 영상 변환

제8장 영상 압축

Written by 캐슬서클


포인트 처리

포인트 문자 그대로 이미지 상에서 한 점에 대한 처리

산술 연산 (   +, - , x , / ), 논리 연산과 평활화 등

본 게시글은 포인트 처리 방식인 산술, 논리 연산, 히스토그램 평활화에 대해 간략히 서술한다.



산술 연산

화소 (픽셀) 에 일정한 값을 더하거나 나누는 연산


<그림 1 레나 이미지를 이용한 산술 연산 결과>

(+)  픽셀 + 변수 값 : 영상의 밝기 증가 

( -) 픽셀 - 변수 값 : 영상의 밝기 감소

(x)  픽셀 x 변수 값 : 영상의 대비 증가 ( 어두운 영역과 밝은 영역의 대비가 증가하여 뚜렷해진다)

(/)  픽셀 / 변수 값 : 영상의 대비 감소 ( 어두운 영역과 밝느 영역의 대비가 감소하여 희미해진다)


그림 1은 레나 이미지에 각각의 산술연산 한 결과이다. 더하기 연산의 경우 입력 영상에 비해 밝아짐을 확인 가능하며, 마이너스 연산의 경우 어두워짐을 확인할 수 있다. 곱하기 연산은 색상의 대비가 증가하여 더 선명한 이미지를, 나누기 연산의 경우 대비가 낮아서 흐릿해진 이미지를 확인할 수 있다.


논리 연산

AND, OR, XOR, 등등.. 


XOR 연산 : 비트 값 일치 할 경우 0, 일치하지 않을 경우 1


XOR 연산을 이용 시 원하는 화소의 분표 또는 제거를 할 수 있음

<그림 23그레이 스케일 이미지에서 128 , 250 비트 값 XOR 연산>

그림 2에서 확인 할 수 있듯이 128, 250과 일치하는 값이 검은색으로 나타남을 확인할 수 있다. 그러나 두 결과 이미지가 똑같은 위치를 표시함을 알 수 있는데 이는 강의 자료 및 교재의 오류로 보인다.

히스토그램 평활화

히스토그램 (histogram) : 이미지 화소의 분포도, 그림 3과 같이 막대 그래프로 표현하곤 한다.

<그림 3 그레이 스케일 이미지에서 128 , 250 비트 값 XOR 연산>

히스토그램은 이미지 화소의 분포도를 나타낸다. 이를 통해 화소가 균일, 치우침을 알수 있다. 전처리 과정에서 주로 사용된다.
평활화는 그림 3과 같이 낮은 밝기를 가진, 즉 한쪽으로 치우쳐진 픽셀의 분포를 균일하게 펴주기 위함이다. 물체는 유사한 밝기를 가지기 때문에 평활화하여 물체와 배경의 대비를 뚜렷하게 할 수 있다. 

평활화 방법

추후 서술

히스토그램 명세화

히스토그램 평활화와 유사하게 작동한다. 둘 모두 색상의 분포도를 변화시키는 측면에서 같다. 그러나 명세화의 경우 히스토그램 전체가 아닌 일부분을 변화한다. 즉, 그림 4처럼 사용자가 원하는 부분 또는 원하는 형태의 히스토그램을 갖도록 변화시킨다.

<그림 4 히스토그램 명세화 결과>




비트 플레인

<그림 5 비트 플레인>


우리가 쓰는 이미지 RGB 색상은 각각 8 비트로 3채널의 이미지다. 그레이 스케일 ( 흑백 영상 )은 단일 채널의 이미지로 8비트 (0 ~ 255)의 값을 표현할 수 있다. 즉 8비트가 모여 한화소를 구성하게 되는데 각각의 비트를 잘라 놓은 것이 비트 플레인이다. 그림 5는 비트 플레인을 그림으로 쉽게 표현하고 있다.

비트 플레인은 주로 영상의 압출에 쓰이는 방식으로 MSB 는 원본 영상의 이미지를, LSB 의 경우에는 잡음을 나타낸다.

<그림 6 비트 플레인 결과>

그림 6은 비트플레인 결과를 보여준다. 그림에서 확인할 수 있듯이 플레인 3~0은 원 영상을 알아볼 수 없을 정도로 심한 잡음, 나머지 플레인은 원본 영상의 정보를 포함하고 있다. 따라서 압축 시 플레인 송신 측에서 7~4 만 전송하고, 수신 측에서 나머지 플레인을 랜덤 잡음으로 합치게 되면 원본과 비슷한 영상을 얻을 수 있다.




작성자 : Black빈

Imshow






Imshow는 OpenCV C++에는 지원을 하고 있지만 JAVA를 사용할 경우에는 지원이 되지 않기에 이 방법을 소개한다.






출처 내에서 소개하는 사용법으로는 단순히 jar파일을 다운 받아 라이브러리에 추가하거나 프로젝트 빌드패스를 추가하는 것

하지만 jar파일 안에 잘못된 라이브러리를 불러와(example.java -> import org.opencv.highgui.VideoCapture) 

highgui라이브러리를 찾을 수 없다는 오류를 발생시킨다.






example.java 파일안에 highgui라이브러리를 불러오는데 이 highgui는 OpenCV3.0.0부터 지원이 되지 않는다.

대신, Imgcodecs와 VideoIO를 이용하면 highgui를 대신해 사용할 수 있다.





오류를 해결하기 위해서 출처에서 Imshow.java코드만 복사해 따로 패키지를 설정하여 클래스를 생성해 주면

바로 사용이 가능하다.


Ex)



Imshow클래스를 import해 준 다음 

아래의 코드처럼 제목만 정하거나 창 사이즈도 같이 조절이 가능하다.


1
2
3
4
5
Imshow im = Imshow("title"); //제목 설정
im.showImage(Mat image); //이미지 출력
 
Imshow im = Imshow("title"windowSize_width, windowSize_height); //제목 설정 및 창 사이즈 조절
im.showImage(Mat image); //이미지 출력
cs




출처 : https://github.com/master-atul/ImShow-Java-OpenCV

본 내용은 대구가톨릭대학교 컴퓨터공학과 4학년 1학기 수업 컴퓨터 영상신호처리에 기반함
공부한 내용을 복습을 위한 정리
추가 필요 개념 또는 추가 학습내용도 올라감

제1-1장 영상처리의 개요 및 프로그램 작성함수

제1-2장 디지털 영상처리의 기초

제2장 포인트 처리

제3장 영역 처리

제4장 영상 개선과 복원

제5장 디지털 간색

제6장 기하학적 처리

제7장 영상 변환

제8장 영상 압축

Written by 캐슬서클


공간 주파수 해상도

  • 주파수에 따라 물체의 인식 정도가 달라진다.
  • 그림 1에서 왼쪽 사각형과 오른쪽 사각형 선 간격이 다름을 알 수 있다.
  • 왼쪽의 그림은 오른쪽의 그림과 비교 했을 때 대비되는 선의 간격이 넓음을 확인 가능하다.
  • 이에 왼쪽의 그림은 저주파 이미지, 오른쪽 그림은 고주파 이미지라 부를 수 있다.
  • 또한 저주파는 높은 에너지를 가지며, 고주파는 낮은 에너지를 가진다.
  • 저주파 이미지는 멀리서 볼 경우 검은색 이미지로 보인다. 이에 에너지가 낮다고 한다.

<그림 1> (좌) 저주파 이미지 (우) 고주파 이미지


    인간의 시각 시스템

    • 큰 의미가 없기 때문에 스킵함. 필요, 요청에 의하면 업로드 할 예정

    공간해상도

    • 이미지 영상을 구하는 화소의 개수
    • 흔히 자주 듣는 1080p, 720p가 공간 해상도와 같다.
    • 1080, 720은 세로의 픽셀 수를 의미하며 우리는 공간해상도 개념을 자연스럽게 쓰고 있다.
    <그림 2> 공간 해상도 별 레나 이미지
    • 그림 2의 1행 1열은 가장 높은 해상도 256 x 256 이며, 2행 2열은 가장 낮은 해상도 16 x 16 이다.
    • 해상도가 높을 수록 이미지가 표현되는 픽셀블럭이 눈에 안띔을 볼 수 있다.

    밝기 해상도

    <그림 3> 밝기 해상도에 다른 레너 이미지

    • 그림 3은 공간 해상도와 마찬가지로 밝기 해상도 별 레나 이미지이다.

    • 공간 해상도 처럼 높은 밝기 해상도 일 수록 밝기 표현 범위가 넓다


    본 내용은 대구가톨릭대학교 컴퓨터공학과 4학년 1학기 수업 컴퓨터 영상신호처리에 기반함
    공부한 내용을 복습을 위한 정리
    추가 필요 개념 또는 추가 학습내용도 올라감

    제1-1장 영상처리의 개요 및 프로그램 작성함수

    제1-2장 디지털 영상처리의 기초

    제2장 포인트 처리

    제3장 영역 처리

    제4장 영상 개선과 복원

    제5장 디지털 간색

    제6장 기하학적 처리

    제7장 영상 변환

    제8장 영상 압축

    Written by 캐슬서클


    영상처리

    정의

    이미지 조작
    1. 고품질의 이미지
    2. 이미지의 특징 추출 및 사용
    3. 이미지 복원
    4. 새로운 이미지 생성
    컴퓨터 그래픽 ( Computer graphics ) :  컴퓨터를 이용한 새로운 이미지 만들어내는 것 ex) 영화 속 CG,..
    이미지 처리 ( Image Processing) : 존재하는 이미지 처리 ex) 소벨 필터, 흑백 변환, 좌우반전...
    컴퓨터 비전 ( Computer Vision) : 컴퓨터가 사람과 유사하게 인식하도록 함

    이미지 종류

    문서 작업을 하다 보면 다양한 폰트를 사용 할 수 있으며, 지금 이 글을 보는 당신도 필요에 의해 폰트를 사용한 경험이 있을 것이다. 사용할 뿐 아니라 새로운 폰트를 만들어 낼 수도 있다. 이미지 또한 상황과 용도에 맞게 다양한 형태가 존재한다. 우린 스마트폰 카메라를 이용해 셀카를 찍었을 때 다채로운 색감을 보여주고 싶을 때는 칼라 이미지, 아날로그적 감성과 중후함 등을 표현하고 싶을 때는 흑백 이미지로 나타내기도 한다. 이처럼 이미지도 다양한 형태가 존재하며 우리는 알게 모르게 사용하고 있다.
    아래쪽 이미지는 대표적인, 자주 쓰이는 이미지 형태를 정리해 놓았다. 여기서 정지영상은 사진이라고 생각하면 된다.


    이미지 처리 과정

    이미지 처리를 통해 우리는 특징을 추출하거나, 더 좋은 화질의 이미지 변경을 주 목표로 한다. 과정은 총 5개의 과정이 존재하며 각각의 과정을 거쳐 원하는 결과물을 얻을 수 있다.

    1. 입력 : 원하는 동영상 또는 사진 이미지

    2. 전처리 ( Preprocessing ) : 특징을 부곽 또는 이미지 형태 바꾸는 작업 ex) 흑백 변환, 잡음제거

    3. 분할 ( Segmentation ) : 물체 또는 사람 등, 관심있는 영역 분할

    4. 특징추출 (Feature Extraction ) : 타 영역 또는 물체와 구분하기 위한 관심  영역 특징 추출

    5. 출력 : 최종 결과물 ex) 물체 추적, 등..


    + Recent posts