본 내용은 대구가톨릭대학교 컴퓨터공학과 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 만 전송하고, 수신 측에서 나머지 플레인을 랜덤 잡음으로 합치게 되면 원본과 비슷한 영상을 얻을 수 있다.




2017년 4월 28일, 춘계학술발표대회 첫 날 아침으로 수요미식회에 나온 해장국집을 찾아갔었습니다.

한창 바쁠 시간대에 가서 그런지 꽤 오래 웨이팅을 해야했습니다. :(


긴 시간 기다리고 들어가서 급하게 시켜먹느라 메뉴판은 찍지 못했습니다.

저희는 대표메뉴인 제주육개장(고사리육개장)을 먹었습니다!


기본으로 셋팅되어있는 깍두기와 파김치입니다.



음식을 시키면 젓갈이랑 풋고추도 나옵니다.



금방 나온 제주육개장! 평상시에 먹던 육개장과는 조금 다른 죽을 먹는 식감이 듭니다.

육개장안에는 곳리랑 잘게찢은 돼지고기등이 들어있습니다.

평소에 먹던 육개장 보단 조금 고소한 맛이 있었습니다.



위치는 다음과 같습니다.


작성자 : 02


맛 평가

캐슬서클 : 우리가 아는 일반적인 육개장과는 다른 맛. 매콤하지 않고 담백하고 느끼함의 중간. 다 먹고 나면 든든하나 쉽게 질릴 수               있음.  특이한 맛임
              점수 : 4.5/10.0

몽포수  : 2.5점 / 5점 만점 (독특한 맛.. 독특한 맛.. 독특한 맛.. 그리고 할말 없음. 그냥 딱 한번 먹어 볼 만 한 그런 음식. 다시 한번 줄 서서 먹으라고 하면... 안함!)


Black빈 : 고사리육개장.... 고사리를 많이 찢어넣어서 그런지 거의 죽을 먹는 듯한 느낌이 듬.. 담백하지만 그만큼 밋밋했던 맛... 오래동안 기다리면서 먹기에는 조금 많이 아쉬운....(2.4/5점만점)

작성자 : 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

+ Recent posts