'프로그래밍/스크랩'에 해당되는 글 9건

  1. 2011/06/17 :: PNG 파일
  2. 2011/06/07 :: ALTER 명령문
  3. 2011/06/07 :: qr코드 구조
  4. 2011/06/07 :: QR 코드 인신 실패
  5. 2011/06/07 :: QR코드 원리
  6. 2011/06/07 :: 이미지 프로세싱 기본 원리
  7. 2011/06/07 :: 차세대 동화상 부호화 방식 H.264
  8. 2011/06/07 :: 유용한 영상처리 메소드
  9. 2011/06/07 :: 이미지 프로세싱
프로그래밍/스크랩 2011/06/17 11:50





 
매우 유용한 정보라기 보다는
스킬을 하나 배웠다 - 감사

 

'프로그래밍 > 스크랩' 카테고리의 다른 글

PNG 파일  (0) 2011/06/17
ALTER 명령문  (0) 2011/06/07
qr코드 구조  (0) 2011/06/07
QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 18:41

db-alter table 명령문

문이2010-04-27 12:13:00주소복사
조회 25  스크랩 0

/*5.7  테이블 구조 변경(열의 추가)*/
 
create table diplomas 
(
    course  varchar(20)  not null,
    student varchar(10)  not null, 
    cou_num int(2), 
    end_date date        not null, 
    primary key (course, student, end_date)

select * from diplomas 
drop table diplomas

insert diplomas values('웹프로그래밍','공자','2','2007-07-25');
insert diplomas values('웹프로그래밍','맹자','3','2007-07-25');

 

/*ALTER TABLE 명령문의 기능 
- 테이블에 새로운 열을 추가한다. 
- 기존에 존재하는 열을 삭제한다. 
- 자료형의 길이를 변경한다. 
- 기존에 존재하는 열의 자료형을 특별한 조건하에서 변경할 수 있다. 
- 기본 키와 같은 새로운 무결성 규칙을 추가할 수 있다. 
- 기존에 존재하는 무결성 규칙을 삭제할 수 있다. */

 

/*sex 항목을 추가*/
alter table diplomas
add sex char(2)

 

/*sex열의 길이를 2에서 4로 증가*/
alter table diplomas
modify sex char(4)

 

/*sex열의 자료형을 char에서 int로 수정*/
alter table diplomas
modify sex int

 

/*기본키삭제*/
alter table diplomas
drop primary key

 

/*기본키추가*/
alter table diplomas
add primary key(student)


/*테이블복사*/
create table diplomas_copy
as
select * from diplomas

drop table diplomas_copy


/*primary key 등의 무결성 부분은 복사되지 않는다.
백업용 명령문*/
select * from diplomas_copy

 

/*desc 데이터 베이스 안의 구조를 볼때 사용되는 명령문(함수)*/
desc diplomas;
desc diplomas_copy;

 

/*테이블 이름변경*/
alter table diplomas
rename new_diplomas

select * from diplomas /*이름이 바껴서 존재하지 않는 테이블로 나온다.*/
select * from new_diplomas

 

'프로그래밍 > 스크랩' 카테고리의 다른 글

PNG 파일  (0) 2011/06/17
ALTER 명령문  (0) 2011/06/07
qr코드 구조  (0) 2011/06/07
QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 12:47

3. QR코드의 구조  게시판 

2011/04/27 09:43

복사http://blog.naver.com/bcginsight/10107850370

QR코드의 구조

 

01 | 구조

 

QR코드는 흑백 격자무늬 패턴을 이루는셀, 위치 검출 패턴(위치 찾기 심벌), 타이밍 패턴, 포맷 정보, 얼라인먼트패턴, 여백(마진) 등으로구성된다.

 


 

02 | 위치 검출 패턴

 

QR코드의 사각형 모서리 중 세 곳에 배치된 위치 검출 패턴은 QR코드의 위치를 인식할수 있게 해주어 고속 판독을 가능하게 해준다. 위치 검출 패턴은 A,B, C의 어느 방향에서든 반드시 흑색 셀과 백색 셀이 교차하며 1:1:3:1:1 비율을유지한다. 따라서 QR코드가 회전되어 있어도 3개 위치 검출 패턴의 관계를 통해 회전 각도를 인식하므로 360도모든 방향에서 판독이 가능해진다.

 



03 | 타이밍 패턴

 

 QR코드는 흑백 격자무늬 패턴을 이루는셀, 위치 검출 패턴(위치 찾기 심벌), 타이밍 패턴, 포맷 정보, 얼라인먼트패턴, 여백(마진) 등으로구성된다.


 

04 | 포맷 정보

 

QR 코드 심벌에서 사용되고 있는 오류 정정률과 마스크 패턴과 관련된 정보를 가지고 있습니다. 디코드를 할 때에는 우선적으로 이 부분을 판독한다.


 

05 | 얼라이언트 패턴

 

QR코드에서 위치 검출 패턴보다 작은 크기의 사각형 패턴은 얼라인먼트 패턴으로서,코드의 크기가 커질 경우 왜곡을 줄이기 위해 QR코드 모델 2에 추가된 패턴이다.

 

 

06 | 마진(여백)확보

 

버전 및 cell 크기를 결정하면 QR코드 자체의 크기는 정해집니다. 실제로 운용하기 위하여 코드 영역은코드 주위에 마진(여백)을 확보해야 한다.마진과 심볼의 4면을 감싸는 아무것도 표시되지 않는 영역입니다. 2차원 코드 심벌의 주위에 있는 공백 부분. QR 코드 모델 1, 모델 2에서 4셀분의 공백이, 마이크로 QR 코드에서는 2셀 분의 공백이 필요하다.

  

QR코드 버전(12X12cell)의 경우

 

※ 코드 주변 4cell 이상 마진 필요

 

 

07 | QR코드의 버전 및 셀 구성

 

QR코드의 버전은 1~40으로 구성되어 있으며 각 버전마다 셀 구성(셀 수)이 정해져 있다. (셀은 QR코드를구성하고 있는 사각의 흑백의 점) "셀 구성"은 코드 내부의 셀의 수인데,버전1(21×21cell)로 시작하여 가로/세로각각 4cell씩 늘어,버전40(177×177cell)로 설정되어 있다.

 
 

 QR코드의 버전은 데이터량/문자 종류 또한 오류복원 레벨에 대응하여 최대 입력문자수가 설정된다. 각버전에 따른 최대입력수는 다음 표에서 확인가능. → 버전과 최대입력수 표

즉, 데이터 량이 증가하면 QR코드를 구성하는 셀(cell)이 많이 필요하며, 그만큼 QR코드는 커진다.

 

 

07 | 오류복원이란?

 

QR코드는 코드의 오염이나 손상에도 코드 자체에 데이터를 복원하는 기능이 있다. "오류복원 레벨" 4단계에서 사용자가 사용 환경에 맞추어 레벨을 선택 할 수 있다. 레벨을 올리면 오류복원 능력은 향상되지만 데이터가 증가되어 코드의 크기가 커진다. 어떤 레벨을 선택하는가는 사용 환경, 코드 크기 등을 종합적으로 고려하여 결정한다. 공장 등 더러워지기 쉬운 환경에서는 레벨Q 또는 H를 선택하고, 쉽게 더러워지지 않고 데이터 량이 많은 경우에는 레벨 L을 선택 할 수 있습니다. 일반적으로는 레벨M(15%) 로 운용되는 경우가 많다.

 

QR코드 오류복원 레벨

레벨 L

약 7%

레벨 M

약 15%

레벨 Q

약 20%

레벨 H

약 30%

※모든 code words(데이터를 구성하는 단위로

 QR코드에는 8bit/code words)에 대한 복원율

 

08 | 오류복원 기능

 

QR코드의 오류복원 기능은 리드 솔로몬 부호※를 원래데이터에 추가하는 것으로 실현하고 있다. 오류복원 능력은 제공된 정보에 대해 얼마나 많은 복원을 할지를 결정한다. 예를 들면, 코드화하고자 하는 Data code words가 100개 있고 그 중 50개를 복원하려면, 리드 솔로몬 부호는 복원 가능케 하고 싶은 code words의 2배 부호가 필요하므로 필요 되는 리드 솔로몬 부호는 100 code words이다. 이 경우 모든 code words수는 200개이고 오류 복원가능 한 code words는 50개이므로 모든 code words에 대한 오류 복원 비율은 25 %이다. 이것은 QR 코드레벨Q에 해당된다. 위의 예에서는 Data code words에대한 오류 복원 비율은 50%라는 견해도 있지만, Data codewords 부분만 오염이나 손상을 입는 것은 아니다. 따라서, QR코드는 오류복원 비율을 모든 codewords에 대한 비율로표시한다. 


(※) 리드솔로몬 부호는 음악CD 등에 이용되는 수학적인 오류복원방법으로, 원래는인공위성이나 행성탐사와 통신 노이즈 대책으로 개발된 기술이다. Bit 단위로 오류복원을 할 수 있고오류가 집중하는 burst오류에 적합하다.


※ 자료의 출처 : QRcode홈페이지 

[출처] 3. QR코드의 구조|작성자 태조샷건

'프로그래밍 > 스크랩' 카테고리의 다른 글

PNG 파일  (0) 2011/06/17
ALTER 명령문  (0) 2011/06/07
qr코드 구조  (0) 2011/06/07
QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 11:57

6. QR코드 인식 실패 예  게시판 

2011/04/27 10:47

복사http://blog.naver.com/bcginsight/10107853390

QR코드 인식 실패 예

 

01 | Cell 왜곡 QR코드

 

QR코드를 이미지 편집 툴(Tool) 등으로 확대/축소하면 하나하나의 cell이 왜곡된다. 외관상은 QR코드처럼 보이지만 인식이 어렵거나, 인식이 되지 않을 수 있다. 크기를 임의로 변경 시 주의해야 한다.

Cell 왜곡 QR코드



02 | 주변에 문자나 그림이 표시된 QR코드

 

QR코드주변에 문자나 그림을 배치하면 마진(여백)을 확보할 수 없다. 이러한 코드는 인식하기 어렵거나 인식할 수 없다.

주변에 문자나 그림이 표시된 QR코드



03 | 문자나 그림 등의 이미지가 중첩된 QR코드

 

QR코드와 중복되는 영역에 문자나 그림 등의 이미지를 배치하면 명암 대비가 선명하지 못하다. 이러한 코드는 인식하기 어렵거나 인식할 수 없다.

문자나 그림 등의 이미지가 중첩된 QR코드

이미지를 클릭하시면 원본크기로 보실수 있습니다.



※ 자료의 출처 : QRcode홈페이지

'프로그래밍 > 스크랩' 카테고리의 다른 글

ALTER 명령문  (0) 2011/06/07
qr코드 구조  (0) 2011/06/07
QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 11:42

QR코드 개념과 활용  주요포스트 

2010/10/03 19:47

복사http://blog.naver.com/sako71/130094880624

 QR코드 개념과 활용

 

지난 주 금요일, 나의 절친한 지인이자 온라인/모바일 마케팅에 대해 많은 지식을 갖고 있는 이창윤대리가 방문했다. 원래는 우리 학원의 모바일 애플리케이션 개발에 대해 논의하려고 만났다가 QR코드 이야기를 더 많이 나누게 되었다. QR코드가 무엇인지는 알고 있었지만 제대로된 활용에 대해서는 깊이 고민해 보지 못했던 차라 더욱 흥미진진한 시간이었다. 그 때의 만남을 계기로 QR코드에 대해 더 깊이 알아보게 되었다. 웹 서칭 등을 통해 모은 자료를 정리해서 블로그에 싣는다.

 

QR코드 정의

 

QR코드는 도요타자동차의 부품을 공급하는 자회사인 덴소에 의해 1994년 개발된 2차원 코드 시스템이다. 원래는 자동차 조립 라인에서 부품의 공정 이동을 관리하기 위해 개발된 것인데 최근에는 물류관리 보다 스마트폰 유저들의 정보 획득 경로로 더욱 많이 쓰이고 있다. 모바일 폰을 통한 QR코드 활용을 모바일 태깅(mobile tagging)이라고 부른다. 우리나라는 스마트폰 보급이 상대적으로 늦어지는 바람에 일본과의 문화적인 밀접성에도 불구하고 QR코드의 대중적 보급 역시 늦어졌다. QR의 의미는 Quick Response 즉 빠른 반응이다.

위키피디아 주소가 담긴 QR코드 모습

 

QR코드의 특징

(1) 고용량의 2차원 코드

QR코드는 2차원 코드다. 2차원 코드는 가로 세로 양방향으로 데이터가 저장되므로 1차원 코드에 비해 훨씬 많은 정보를 표현할 수 있다. 우리가 일반적으로 쓰는 바코드는 한 방향으로만 읽을 수 있어 표현할 수 있는 데이터가 적다. 일반적으로 바코드는 숫자 20자리 정도만 표현할 수 있지만 QR코드는 최대 7089자의 숫자를 표현할 수 있다. 엄청난 차이라고 할 수 있다.

 
[참고] QR Code의 최대 표현 용량
Numeric(숫자) only Max.7,089characters 
Alphanumeric(영문 및 숫자 혼합) Max. 4,296characters 
Binary (2진수, 8 bits) Max. 2,953bytes 
Kanji/Kana(한자) Max. 1,817characters

 

미국에서도 꽤 오래 전 부터 2차원 바코드를 사용하고 있다. 유학시절 쓰던 미국 면허증에도 2차원 바코드가 찍혀 있었다.

 

 

미국 뉴욕주 면허증 뒷면 (2001년8월)

상단에 1차원 바코드, 하단에 2차원 코드가 있다.

하단의 2차원 코드는 PDF417이라는 코드로서 미국 Symbol 사에서 만든 것이다. 
최대 2710개의 숫자를 저장할 수 있는 코드이다.

 

이 외에도 Data Matrix, MaxiCode라는 2차원 코드가 있다. Data Matrix는 미국 CI Matrix라는 회사가 MaxiCode는 미국의 유명 택배회사인 UPS에서 만든 것이다.

 

 

 

(2) 작은 사이즈

QR코드는 같은 양의 정보를 바코드에 비해 매우 작은 크기로 표현할 수 있다.

 

(3) 오염 및 훼손에도 높은 판독력 유지

QR코드는 자체적으로 오류 정정 기능이 있으므로 펜이나 얼룩 등에 의해 오염되거나 코드의 일부가 훼손되거나 멸실된 경우에도 코드를 읽어들일 수 있다.

QR코드가 오염된 경우(좌),

훼손되거나 멸실된 경우(우)에도 코드를 읽어들일 수 있다.

 

[참고] QR코드의 에러 정정 능력 / Error correction capacity

Level L: 7%of codewords can be restored. 
Level M: 15%of codewords can be restored. 
Level Q: 25%of codewords can be restored. 
Level H: 30%of codewords can be restored.

 

(4) 어떤 방향에서도 읽을 수 있음

바코드는 바코드 스캐너에서 나오는 빔과 수직방향으로 배치해야 데이터를 읽을 수 있다. 그러나 QR코드는 360% 어떤 방향에서든 읽을 수 있다. QR코드에 내장 되어있는 position detection patterns 덕분이다.

 


바코드는 스캐너의 빔(붉은색)과 수직으로

배치해야 읽을 수 있다.

QR코드는 그렇지 않다.

 

QR코드의 구조

출처: 위키피디아

(세부적인 구조와 원리는 추후 업데이트 예정)

 

 

 

QR코드의 변형

(1)디자인 QR 코드 / Design QR Code

디자인 QR코드는 QR코드에 디자인 요소를 넣은 것을 말한다. 원래 QR코드의 표준에는 디자인 QR에 대한 정의가 되어 있지 않지만, QR코드의 강력한 오류 정정기능을 이용하여 일부분을 변형한 현태이다. 엄밀히 말하면 디자인 QR코드는 QR코드를 훼손시킨 형태라고 말할 수 있는데 훼손된 QR코드를 읽을 수 있듯이 디자인QR코드도 읽을 수 있는 것이다.

 

QR코드의 특허를 갖고 있는 덴소사는 디자인QR코드에 대해서는 부정적인 인식을 갖고 있는 것으로 보인다. 덴소에서 운영하는 QR코드 공식 홈페이지에서는 다음과 같은 글을 볼 수 있다.

"QR코드에 일러스트를 겹치거나, 디자인을 싣는 것은 QR코드의 규격에서 벗어나 QR코드라 지칭할 수 없습니다. 당사는 KS, ISO 규격에 따른 QR코드에 한하여 당사가 보유하는 특허권을 행사하지 않는다고 선언하고 있으며, 표준을 따르지 않는 QR코드는 대상 외로써 특허권을 행사할 수도 있습니다."

 

다음 사진들은 디자인 QR코드의 활용 사례이다.

 

QR코드 안에 BBC라는 문자를 새겼다.

 

QR코드를 다양한 색으로 구성하였다.

 

아반떼 광고를 포함한 디자인 QR코드

 

일본 SET사의 디자인QR코드

일본 루이뷔통 모바일페이지로 이동한다.

QR코드의 영역 내부 뿐만 아니라 외부에도 부가적인 디자인 요소를 넣었다.

 

주요기업 로고를 활용한 디자인QR 개발 사례

 

(2) 마이크로 QR 코드 / Micro QR Code

마이크로 QR은 크기를 줄인 QR코드라고 보면 된다. 크기가 준 만큼 용량 또한 줄어들어 32개 문자만 표현할 수 있다.

 

마이크로 QR 코드

 

QR코드 표준

 

QR코드 인코딩 관련 표준에 대해서는 몇가지 문서가 존재한다.

 

* 1997년 10월 — AIM International
* 1999년 1월 — JIS X 0510
* 2000년 7월— ISO/IEC 18004:2000 Information technology — 자동 판독 및 데이터 캡춰 기술 — QR코드 바코드 심볼로지 — QR Code (지금은 폐지함). (이 때 QR코드 모델 1과 모델 2를 정의함)
* 2006년 9월 — ISO/IEC 18004:2006 Information technology — 자동 판독 및 데이터 캡춰 기술 - QR코드 2005 바코드 심볼로지 사양. (이 때 QR Code 모델2의 연장상 상에 있는 "QR Code 2005"를 정의함. QR코드 모델1의 심볼을 해독하는 방법을 규정하지 않아서 규정 준수를 위해 새로운 해독법이 필요함)

QR코드 표준 규정 중 application layer 영역에 대해서는 구현방법 간에 어느정도 차이가 있다. NTT도코모는 URL, 연락처 정보, 그리고 몇몇 데이터 타입을 인코딩하는 데 있어 사실상 표준을 확립하였다.

 

특허 및 라이센스

QR코드는 덴소가 특허를 갖고 있다. 하지만 특허를 행사하지는 않기로 했다. 그래서 라이센스 없이도 자유롭게 QR코드를 활용할 수 있다. QR코드는 ISO에 의해 그 표준이 명확하게 문서화되어 규정되어 있다. QR코드라는 말은 Denso-Wave사의 등록상표이다.

 

QR코드의 마케팅 활용

 

일본 Transcosmos그룹의 QR코드 홍보 옥외광고

 

하나은행 본점 대형 QR코드 현수막

 

QR코드를 활용한 거리 홍보 (일본)

 

정치 마케팅에 활용

 

[참고] 일본의 QR코드 활용 사례

 

건물 외벽을 QR코드로 구성
 
 

QR코드가 삽입된 명함
 
 

옥외광고에 활용
 
 

인쇄광고물
 
 

조형물
 
 

 

[참고] 국내브랜드 QR코드 활용 사례 (추가)

 

미닛메이드 오렌지주스
 
 

비너스 글램에스
 
 

외국계 남성 잡지 MAXIM
 
 

매일유업 카페라떼
 
 

KBS드라마 성균관 스캔들
 
 

삼성물산 빈폴 Bean Pole
 
 

[참고] 미국 / 유럽의 QR코드 활용 사례

 

펩시콜라 광고
 
 

타임스퀘어에 PR Newswire 사옥의 QR코드 광고
 
 

폭스바겐 광고
 
 

QR코드를 활용한 문신
 

[참고] QR코드의 잘못된 활용 사례

미국의 유명한 전자제품 양판점 베스트바이(BestBuy)에서 있었던 일이다.

한 고객이 매장에서 다음과 같은 가격표를 보았다고 한다. 밑에 QR Code가 있길래 찍어 보았다고 한다.

 

 

QR코드를 통해 아래와 같은 모바일 페이지로 이동한 것까지는 좋았는데,

 

 

이런!! 맙소사!! QR코드가 안내한 모바일 페이지는 매장의 가격보다 온라인쇼핑몰에서 70불이나 싼 가격에 팔고 있다는 "친절한" 정보를 알려 주고 있다. 위와 같은 QR코드는 "제발 지금 TV를 사지 말아 주세요. 집에가서 온라인으로 사세요..." 하고 읍소하는 꼴이다. 베스트바이의 치밀하지 못한 마케팅 사례라고 할 수 있다.

 

[참고] QR코드로 개인명함 만들기

 http://www.scany.net 이라는 사이트를 방문하여 개인명함을 QR코드로 만들어 보았다.

 

(1) 개인정보 입력

Scany.com 이라는 사이트를 방문하여 개인 명함을 생성해 보았다

 

 

(2) QR코드 생성

입력한 나의 개인정보를 바탕으로 생성된 QR코드

(3) QR코드 스캔 및 확인

위의 QR코드를 쿠루쿠루라는 QR코드 리더 프로그램을 사용하여, 다음과 같이 확인하였다.

 

정상적으로 읽혔음을 알 수 있다.

(이메일 주소에 점을 두 번 찍은 것은 스팸메일 방지를 위한 것임)

 

* QR코드에 대한 지식을 활용하여 실무에 적용한 후 발견된 것을 정리하여 업데이트 할 예정입니다.

* 퍼가실 분을 덧글을 남겨주시면 감사하겠습니다.

* QR코드에 대한 공식적인 정보는 http://www.qrcode.com/ko/index.html 를 참고하시기 바랍니다.

'프로그래밍 > 스크랩' 카테고리의 다른 글

qr코드 구조  (0) 2011/06/07
QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
유용한 영상처리 메소드  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 10:21
이미지프로세싱  bLife [Project] 

2008/05/25 22:59

복사http://blog.naver.com/jooh55/110031437711

1. 이미지 프로세싱이란?

 

   우리는 항상 수많은 영상을 보면서 살아간다. 눈에 보이는 모든 것을 통해 공간을 인지하고, 상황을 파악하고, 위기에 대처하기도 한다. 컴퓨터 속 세상도 마찬가지이다. 초기의 컴퓨터는 CUI환경에서 문자를 통해 모든 것을 처리해야 했었지만, 이젠 영상이 없는 컴퓨터를 상상하기 힘들다. 지난 1월말 출시한 마이크로소프트의 새로운 운영체제 윈도우 비스타(Windows Vista)는 더욱 예쁜 인터페이스로 사용자들을 사로잡는다. 새로워진 아이콘과 그래픽 덕분이다.
  컴퓨터는 모든 것을 0과 1로 처리한다. 영상에 있어서도 마찬가지이다. 스캐너, 디지털 카메라를 통하여 획득되었거나 컴퓨터를 이용하여 생성된 영상자료를 목적에 맞게 처리하는 일련의 과정을 이미지프로세싱(Image Processing)이라 한다. 이것은 영상의 화질을 개선하거나, 영상을 기하학적으로 변환하거나, 영상의 특징을 두드러지게 변화시키거나, 영상을 압축하는 등의 작업을 포함하며, 방송 영화, 의료, 산업 현장, 사진 편집, 출판 등 매우 광범위한 분야에 활용되고 있다.
  이 학습컨텐츠에서는 이미지 프로세싱의 기본적인 내용이라 할 수 있는 픽셀 기반, 영역 기반 프로세싱과 기하학적 프로세싱에 대한 내용을 다룬 뒤, 나아가 주파수 영역에서 이미지를 처리할 수 있는 방법도 다루도록 하겠다.

 

2. 이미지 프로세싱 기초

 

자연 영상은 컬러와 음영이 연속적으로 변화하지만, 컴퓨터에서 처리하는 디지털 영상은 그렇지 않다. 디지털 카메라나 스캐너와 같은 기기를 이용하면 자연 영상을 디지털화하는 것이 가능하다. 이러한 기기를 디지타이저(Digitizer)라고 하며, 샘플링(Sampling)과 양자화(Quantization)의 두 가지 기능을 한다. 샘플링은 자연 영상에서 일정한 간격으로 데이터를 뽑아내는 것을 말한다. 디지털 카메라에서, 5백만 화소, 7백만 화소와 같은 이야기는 그 디지털 카메라의 샘플링 수준(Sampling Rate)을 이야기한다. 5백만 화소의 카메라로는 5백만 개의 데이터로 이루어진 사진을 찍을 수 있는 것이다. 이 때의 사진을 이루는 각 데이터를 픽셀(pixel)이라고 하며, 이미지의 가장 작은 구성 요소이다. 아래 그림에서 이미지를 확대하여 그것을 이루고 있는 점들인 픽셀을 볼 수 있다. 픽셀들의 배열로 이루어진 이러한 이미지를 비트맵(bitmap) 이미지라 한다.

(그림 1) 이미지를 이루고 있는 픽셀(pixel)들

 

  양자화(Quantization)는 샘플링을 통해 획득된 데이터(픽셀)에 숫자로 된 값을 할당하는 것을 의미한다. 할당되는 숫자의 범위에 따라 여러 양자화 수준이 있을 수 있으며, 256색, 하이 컬러, 트루 컬러 등의 용어는 이러한 양자화 수준을 지칭하는 말이다.


(그림 2) 서로 다른 수준으로 샘플링한 사진의 예


(그림 3) 서로 다른 수준으로 양자화한 사진의 예 

 

 

 

3. 컬러 모델

 

  흑백 영상의 경우에는 각 픽셀의 밝기만으로 영상을 표현할 수 있지만, 컬러 영상에서는 다양한 표현 방법이 요구된다. 컬러 모니터와 같이 빛을 이용해서 색을 표현할 때는 빛의 삼원색을 이용한 RGB 컬러 모델을, 컬러 프린터에서는 색의 삼원색을 이용한 CMY 컬러 모델을 이용한다. 이외에도 색상, 명도, 채도의 혼합으로 색을 나타내는 HSI 컬러 모델이 있다.


(1) RGB 컬러 모델

  RGB컬러 모델은 빛의 삼원색인 빨강(Red), 초록(Green), 파랑(Blue)을 이용하여 색을 표현한다. 어떤 이미지라도 R, G, B 세 가지 색으로 분리하는 것이 가능하다.(그림 4) 흔히 R, G, B의 각 성분을 8비트 (256단계 : 가장 어두운 0.0을 00이, 가장 밝은 1.0은 FF가 나타내게 된다)로 표현하는 방식을 트루 컬러(True Color, Millions of colors)라고 한다. 각 성분에 16진수 두 자리씩 총 여섯 자리를 이용하면 모든 색을 나타내는 것이 가능하다.(그림 5) 빛은 혼합할수록 점점 밝아지기 때문에, RGB컬러 모델을 가산혼합(Additive Color Mixing)이라고 한다.

(그림 4) 사진을 RGB 컬러 모델의 각 성분으로 나눈 예



(그림 5) RGB 색상들과 컬러 큐브(Color Cube)


  3차원 좌표공간의 x, y, z축에 각각 R, G, B 성분을 대입하면 (0,0,0)에 검정색이, (1,1,1)에는 흰색이 있는 정육면체가 완성된다. (그림 5)의 오른쪽에 있는 정육면체가 바로 그것인데, 이것을 RGB 컬러 큐브(RGB Color Cube)라 한다.

  빛의 3원색이 빨강, 파랑, 초록이 된 것은 우리 눈의 감각 체계와 관련이 있다. 사람의 눈에는 빨강, 파랑, 초록에 해당하는 세 가지 파장의 빛을 받아들이는 수용체가 있어서, 각 수용체에 전달되는 감각의 세기로 빛의 색과 밝기를 구분하게 된다. 서로 다른 진동수를 가진 음들이 모두 우리에게 다양하게 들리듯이 400~700nm의 파장을 가진 빛들도 모두 다양하지만, 빨강, 파랑, 초록의 빛을 적절히 혼합하는 것만으로도 다른 모든 색의 빛을 보는 것과 같은 효과를 낼 수 있는 것이다. 만약 우리 눈에 네 가지 수용체가 있었으면, 컬러 큐브를 4차원에 그려야 했을지도 모른다.

 

(2) CMYK 컬러 모델

  CMYK 컬러 모델은 청록(Cyan), 자홍(Magenta), 노랑(Yellow), 검정(Key, black) 으로 구성된다. 원래 검정색이던 화면에 빛을 쏘아서 색을 만들어내는 모니터에서는 빛의 삼원색인 RGB를 이용했지만, 프린터와 같이 원래 흰색이던 종이에 잉크를 이용해 색을 만들어낼 때에는 물감의 삼원색인 CMY컬러를 이용해야 한다. 색을 섞을수록 더 어두워지기 때문에 이것을 감산혼합 (subtractive Color Mixing)이라고 한다. CMY만을 이용해도 이론적으로 모든 색을 표현할 수 있으나 검정색이 추가적으로 이용되는 까닭은 아래와 같다.


  • 완전히 순수한 컬러 잉크를 생산하는 것은 어렵기 때문에, CMY를 섞는 것으로 순수한 검정색을 만들어내는 것이 불가능하다.
  • 세 잉크를 모두 뿌리면 종이가 마르는 데에 오래걸리고, 특히 빠른 속도로 문서를 인쇄해야 하는 경우에 다음 페이지에까지 잉크가 번질 수 있다.
  • 흔히 문자는 검정색으로 인쇄된다. 하지만 세가지 색깔의 잉크가 정확히 똑같은 위치에 뿌려지려면 매우 섬세한 처리가 필요하게 된다.
  • 검정 잉크가 컬러 잉크보다 훨씬 싸기 때문에 검정 잉크를 사용하면 비용을 절감할 수 있다.


  RGB와 CMY는 서로 보색 관계에 있기 때문에, RGB를 CMY로 변환하는 작업은 간단하다.


RGB와 CMY의 상호 변환

RGB → CMY

CMY → RGB

C = 1.0 – R

M = 1.0 – G

Y = 1.0 - B

R = 1.0 – C

G = 1.0 – M

B = 1.0 - Y


  CMYK는 컬러 잉크를 가장 조금 쓰는 데에 그 목적이 있기 때문에, C, M, Y 성분 중 가장 작은 성분만큼을 검정으로 나타내고, 그 차이에 해당하는 부분을 컬러 성분으로 나타낸다. 수식으로 표현하면 아래와 같다.


RGB와 CMYK의 상호 변환

RGB → CMYK

CMYK → RGB

C = (1.0 – R – K) / (1.0 – K)

M = (1.0 – G – K) / (1.0 – K)

Y = (1.0 – B – K) / (1.0 – K)

K = min { 1.0 – R , 1.0 – G , 1.0 – B }

R = (1.0 – C)(1.0 – K)

G = (1.0 – M)(1.0 – K)

B = (1.0 – Y)(1.0 – K)



  아래의 (그림 6)는 같은 사진을 CMY만 써서 나타낸 것(왼쪽)과, CMYK를 이용하여 컬러 잉크 사용량을 최소화한 경우를 비교한 것이다. CMYK 컬러 모델을 쓰는 경우에 컬러 잉크가 훨씬 절약된다는 것을 알 수 있다.


(그림 6) CMY 컬러 모델(왼쪽 4개)과 CMYK 컬러 모델(오른쪽 4개)



(3) HSB 컬러 모델과 HSL 컬러 모델

  색상을 이루는 원소별로 나누는 방법 외에도, 이미지의 색상과 채도와 밝기 정보를 구분해서 상을 만드는 HSB와 HSL 컬러 모델도 있다.

  HSB 컬러 모델(HSV컬러 모델)은 색상(Hue), 채도(Saturation), 밝기(Brightness 또는 Value)로 구성된다. 색상은 그 색의 원색을 나타내고, 채도는 색의 순수도를 나타내는 것으로 원색에 어느 정도의 흰색이 혼합되었는지를 나타낸다. 밝기는 색깔의 밝은 정도를 나타낸다.

  HSB 컬러 모델은 (그림 7)과 같이 원뿔 모양의 좌표계로 표현된다. 색상은 0도에서 360도 사이의 각도로 표현된다. 0도는 빨강색, 120도는 초록색, 240도는 파란색을 각각 나타낸다. 채도는 0에서 1까지의 값을 가지며 원뿔 중심으로부터의 수평거리 (z축과의 거리)로 표현된다. 명도는 세로축에 해당하며, 가장 아래쪽이 명도 0인 검정색을 나타내고, 가장 위쪽이 명도 1인 흰색을 나타낸다.

  RGB나 CMYK 컬러 모델이 인간의 신경계가 생물학적으로 빛을 감지하는 방법을 통해 구성되었다고 한다면, 이 컬러 모델은 인간이 감성적으로 색을 받아들이는 방법과 가장 가깝게 구성되었다고 할 수 있다. 인간이 색을 구분할 때에는 어떤 색상인가(Hue), 얼마나 선명한 색인가(Saturation), 얼마나 밝은 색인가(Brightness) 등을 기준으로 하기 때문이다.



(그림 7) HSB 컬러 모델


(그림 8) HSL 컬러 모델


  HSB 컬러 모델과 비슷한 HSL컬러 모델은 원뿔 두 개를 이용하여 색상공간을 구성한다. HSL 컬러 모델은 밝기를 그대로 하고 채도를 변화하면 원색으로부터 같은 밝기의 회색을 얻을 수 있기 때문에 '밝기'의 직관적인 개념과 일치하고, 밝은 색과 어두운 색이 공간상에서 서로 대칭적이라는 이점이 있다. 반면 분홍색과 같이 원색과 흰색 사이에 있는 색들이 100%의 채도를 가지게 되기 때문에 '채도'의 직관적인 개념과는 다소 차이가 생기게 된다.

  HSL 컬러 모델을 이용하는 Windows의 색 편집 대화상자(그림 9)에서는 2차원 영역에서 색상과 채도를 선택하고 1차원 막대로 밝기를 설정할 수 있다. HSB컬러 모델을 이용하는 포토샵(그림 10)의 경우 색상(Hue)를 1차원 막대로 설정하고 채도와 밝기를 2차원 영역에서 선택할 수 있도록 했다. 이 경우에는 2차원 영역을 적절히 변형하는 것으로 HSB원뿔의 단면이 될 수도 있고 HSL 원뿔의 단면이 될 수도 있기 때문에, 두 모델의 구분이 불필요해진다.

  많은 소프트웨어에서는 각 성분의 수치를 직접 입력할 수 있는데, 이 때 HSB 컬러 모델을 사용하는 소프트웨어는 MacOS X시스템, GIMP, Paint.NET과 Adobe사의 그래픽 프로그램들이 있고, HSL 컬러 모델을 사용하는 소프트웨어는 Inkspape, Macromedia Studio, Windows의 색 편집 대화상자, Paint Shop Pro등이 있다.

(그림 9) Windows의 색 편집 대화상자


(그림 10) 포토샵의 색깔 선택 화면



 

(4) 기타 컬러 모델들

  앞서 다룬 세 가지 컬러 모델 이외에도 YCbCr, YUV, YIQ 등 다양한 컬러 모델들이 있다. 여기서 Y는 공통적으로 광도를 나타낸다. YCbCr 모델에서 Cb와 Cr은 각각 푸른 정도와 붉은 정도를 나타내며 JPEG파일의 압축에 사용된다. 사람의 눈이 색상보다 광도에 더 민감하기 때문에, Cb와 Cr보다 밝기 정보를 더 구체적으로 저장하는 것으로 압축률을 높일 수 있다. YUV와 YIQ는 각각 PAL과 NTSC 컬러 TV방송에 사용되는 컬러 모델이다. 

'프로그래밍 > 스크랩' 카테고리의 다른 글

QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
유용한 영상처리 메소드  (0) 2011/06/07
이미지 프로세싱  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 10:10

차세대 동화상 부호화 방식 MPEG-4 AVC/H.264

자료집필: 국제테크노정보연구소

/ 동화상의 압축 부호화

동화상 신호는 정보량이 매우 많기 때문에, 그대로 기록하거나 전송하기는 어렵기 때문에, 데이터량을 압축하는 부호화 기술이필수이다. 지금까지, ISO에 의한 MPEG-1, 2, 4 등의 국제표준 방식이 규정되어 있어, DVD나 디지털 방송, 차세대휴대전화에서 영상전달 등에 응용되고 있다.
도시바사는 복수의 참조 프레임을 적응적으로 값을 붙여 가산해서 움직임 예측에이용함으로써 페이드 화상의 품질을 큰 폭으로 개선하는 수법을 제안하여 규격 최종 초안에 채용되었다. 향후, 고품위 영상 축적이나전달, 데이터 방송, 차세대 휴대전화 등에 그 응용이 기대된다.
여기서는 2003년 3월에 규격 최종 초안(FDIS)이발행된 최신의 동화상 부호화 국제표준 "MPEG-4 AVC(Moving Picture Experts Groupphase4Advanced Video Coding)/H.264"(이하, H.264로 약기)에 대하여, 표준화 동향과 최신기술을 도시바사의기술자료를 토대로 소개한다.

/ H.264 표준화의 경위

H.264는 1998년 무렵부터 ITU-T의 비디오 전문화 그룹에서 검토가 시작되었다. 한편, ISO에서도 MPEG-4 후속타의 동화상 부호화 방식을 결정하기 위해, 2001년 7월에 신방식 모집 콘테스트를 실시했다.
이콘테스트에서, ITU-T 그룹이 검토하고 있던 방식이 화질면에서 우수했기 때문에, 이 방식을 토대로 ITU-T와 ISO 합동의검토팀 JVT(Joint Video Team)에 의한 심의가 시작되었다. 그 후, JVT내에서 여러 방식을 개량하여 더욱 우수한규격 최종 초안에 반영했다.

/ H.264에서 사용되고 있는 기술

H.264는 종래의 동화상 부호화 방식과 마찬가지로, 이미 부호화된 화상 프레임으로부터의 움직임을 추정하여 예측신호를 작성하고,잔차신호를 이산 코사인 변환(DCT)하여 부호화하는 "움직임 보상(motion compensation)+DCT"라 불리는 기술을토대로 하고 있다. 그러나 이 기술을 더욱 개량하여 종래보다 2배의 압축 성능을 실현하고 있다. 이하, 주된 기술을설명한다(그림 1).

● 움직임 보상을 개선하는 기술
종래 방식에 비해 더 작은 블록 사이즈(4×4 화소까지), 섬세한 화소 정밀도(1/4 화소까지)로, 미세한 움직임 보상을 한다.또, 복수의 참조 프레임(이미 부호화한 화상 프레임)중에서 최적한 것을 선택하여 움직임 보상에 사용한다.

● 시각적인 화질 열화를 억제하는 기술
DCT를 이용하는 화상부호화 방식의 결점이었던 블록 경계의 왜곡을 억제하는 필터를 사용한다. 또 DCT의 단위도 종래 방식보다 작은 4×4 화소 블록으로 하여, 시각적인 왜곡이 쉽게 눈에 띄지 않도록 하고 있다.

● 부호화하는 정보의 성질에 적응하는 기술
DCT 양자화한 후의 신호를 엔트로피 부호화할 때에, 주위의 정보를 토대로 부호표 테이블을 바꾸는 등으로 화상의 성질에 맞게 부호화한다.

/ 도시바사가 제안한 적응 보간 예측방식

JVT발족 이래, 몇몇 회사에서 표준화 활동에 적극 임하고 있다. 여기서는 도시바사가 제안한 적응 보간 예측 방식의 원리를 그림 2에나타낸다. 종래 방식에서는 화상의 움직임을 예측하는 구조는 있었지만, 페이드 화상과 같이 화면의 밝기가 시간적으로 변화하는화상을 유효하게 예측하는 수단이 없어, 부호화 화상의 품질이 열화하는 요인이 되고 있었다.
이에 대한 제안 방식으로,복수의 참조 프레임을 적응적으로 값을 붙여 가산한 신호를 예측에 이용함으로써 이 문제를 해결하고 있다. 페이드 화상을 부호화한결과를 종래 방식과 비교하여 그림 3에 나타낸다(비트레이트: 1Mbps, 화상 사이즈: 720×480 화소, 30프레임/초).종래 방식에 비해 SN비(신호대 잡음비)가 약 9dB로 대폭 향상되어 화질이 크게 개선되고 있다. 이 효과가 인정되어 이 방식은H.264의 규격 최종 초안으로 채택되었다.

/ 실용화하기 위한 극복 과제

H.264는 앞서 언급한 바와 같이 여러 가지 개량 기술을 적용함으로써 종래의 국제표준 방식에 비해 큰 폭으로 압축 성능이 향상된다. 이때문에, 고품위 영상의 기록/축적, 인터넷이나 케이블 모뎀에서의 영상전달, 디지털 데이터 방송, 차세대 휴대전화 등에 있어서동영상의 교환 등에 그 응용이 기대되고 있다.
반면, 종래방식에 비해 처리량도 증가해 버리므로, 이것이 극복 과제이다.실제로, 표준화 참조 소프트웨어(JM)를 사용했을 경우, 부호화 처리에 종래 방식의 몇십배나 되는 시간이 소요되고 만다. 그러나표준규격에서는 부호화된 정보를 복호하는 디코더만을 규정하고 있고, 인코더의 처리에는 자유도가 있기 때문에 H.264의 특징인고화질을 유지하면서 JM 등에서 사용되고 있는 처리에 비해, 연산량을 대폭 삭감하는 부호화 제어기술을 개발할 여지가 있다.

'프로그래밍 > 스크랩' 카테고리의 다른 글

QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
유용한 영상처리 메소드  (0) 2011/06/07
이미지 프로세싱  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 10:08

import java.awt.*;

import java.awt.image.*;

public class Image_Processing_Util

{

            //픽셀 배열과 넓이높이 받은후 이미지 생성

            public static Image getImage(int[] pixels, int width, int height) {

                          Image image;

                          Canvas temp = new Canvas(); //그리기가 가능한 Canvas 클래스 사용

                          image = temp.createImage(
                                   new MemoryImageSource(width, height, pixels, 0, width));

                          //메모리의 픽셀데이타를 이용하여 Canvas를 채운후 이미지를 생성한다

                          return image;

            }

            //픽셀 배열과 넓이높이 받은후 GrayScale 픽셀 배열을 반환

            public static int[] getGrayPixels(int[] pixels, int width, int height)

            {

                          int[]   grayPixels = newint[width * height];

                          int     r = 0;

                          int     g = 0;

                          int     b = 0;

                          for (int i=0; i<(width * height); i++) {

                                       r = (pixels[i] & 0x00ff0000) >> 16;

                                       g = (pixels[i] & 0x0000ff00) >> 8;

                                       b = (pixels[i] & 0x000000ff);

                                       grayPixels[i] &= 0x00000000;

                                       grayPixels[i] = ((255 << 24)    | (((r + g + b) / 3) << 16) 

                                                              | (((r + g + b) / 3) << 8)| ((r + g + b) / 3));

                          }

                          return grayPixels; 

            }

//이미지를 독리적인 부분영상으로 분리후 리턴

          public static Image imageCrop
                           (Image origin_img, 
int width, int height, int x0, int y0, int x1, int y1)

        {

                         Image result;

                         int crop_Width =  x1-x0;

                         int crop_Height = y1-y0;

                         int [] CropPixel = newint[crop_Width * crop_Height];

                         int [] pixel = newint[width * height];

                         try {

                                  PixelGrabber pg = new PixelGrabber
                                                           (origin_img, 0, 0, width, height, pixel, 0, width);

                                   pg.grabPixels();

                               catch(InterruptedException e) { }

                         for(int y=0; y<crop_Height; y++)

                               for(int x=0;x<crop_Width; x++)
                                CropPixel[x + (y*crop_Width)] = pixel[(x+x0) + ((y+y0)*width)];

                        result = getImage(CropPixel, crop_Width, crop_Height);

                         return result;

  }


           

            //이미지 반전 이미지넓이높이를 받은후 반전된 이미지 픽셀값 반환

  public static int [] arithmetic_inversion(Image image, int w, int h)

            {

                         int [] pixel = newint[w*h];

                         int r=0, g=0, b=0;

                         try {

                               PixelGrabber pg = new PixelGrabber(image, 0, 0, w, h, pixel, 0, w);

                                pg.grabPixels();

                               catch(InterruptedException e) { }

      

                         for(int i=0; i<w*h; i++) {

                              r = 255 - ( (pixel[i] & 0x00ff0000)>>16 );

                               g = 255 - ( (pixel[i] & 0x0000ff00)>>8  );

                               b = 255 - ( (pixel[i] & 0x000000ff)     );

                               pixel[i]&=0x00000000;

                              pixel[i] = ( (255 << 24) | (r << 16) | (g << 8) | b );

                               }       

                         return pixel;

  }

}

'프로그래밍 > 스크랩' 카테고리의 다른 글

QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
유용한 영상처리 메소드  (0) 2011/06/07
이미지 프로세싱  (0) 2011/06/07
posted by zerowns
프로그래밍/스크랩 2011/06/07 10:01
이미지 프로세싱  모션트래킹 

2005/05/14 00:04

복사http://kamvo.blog.me/60012818594

1. 디지털 영상처리(Digital Image Processing)란?

2. 영상처리의 분류

3. 영상처리의 응용분야

4. 모폴로지 기법

5. 기하학적 변환을 통한 영상 처리

6. 이진화 종류

7. 윤곽선 검출

8. 마스크 연산을 이용한 필터링

9. 그 밖의 다양한 영상처리

 

1. 디지털 영상처리 (Digital Image Processing)란?

    디지털 영상처리는 글자 그대로 컴퓨터로 영상을 처리하는 것이다. 보다 넓은 의미로 의 영상처리는 컴퓨터를 이용하여 영상을 생성하고, 처리하고 영상을 해석, 인식하는, 영상과 관련된 모든 분야를 의미한다. 이 기술을 이용하여 우리는 흐린 영상을 보다 선명하게 볼 수 있다거나, 영상이 회손된 경우 다시 원 영상으로 복원한다든지 영상에서 필요한 정보만을 추출하여 얻을 수 있는등 다 방면으로 활용할 수 있다.

    영상처리는 컴퓨터 그래픽(Compurter Graphics), 컴퓨터 비젼(Compurter Vision) 과 밀접한 관계가 있다. 컴퓨터 그래픽은 컴퓨터를 이용하여 셩상을 생성 시키는 쪽에 주력하는 분야이고, 컴퓨터 비젼은 영상 처리중에서도 특히 영상의 인식, 이해 등을 중점적으로 주로 연구하는 분야이다. 반면에 영상처리는 보통 여러 장치들을 통하여 이미 생성된 영상을 입력하여 영상을 변화시키는 것이며 영상을 재가공하거나 영상에서 정보를 추출하는 과정이라 할 수 있다.

freebird_up.gif

2. 영상 처리의 분류

    (1) 영상 조작 (Image Manipulation)

    영상 획득시 주위의 환경의 영향으로 영상이 흐리거나 너무 어두울 경우, 혹은 잡영이 많이 섞인 경우 우리는 원하는 영상을 얻기 위해 영상을 조작하는데 이를 영상 조작이라 한다. 이는 영상 처리에 있어 매우 기본적이면서도 중요한 부분이다.

    (2) 영상 분석 (Image Analysis)

     영상 조작에 의해 보정된 영상에서 특징을 찾아 내는 것으로, 인쇄되거나 필기된 글자를 실별하거나, 카메라를 통해 부품의 치수를 측정하고 PCB기판의 정밀도를 체크하거나, 의료분야에서의 세포분석등 영상을 분석하는 영역을 말한다.

    (3) 영상 인식 (Scene Analysis)

    사람의 눈으로는 식별이 불가능한 것들, 즉 미세한 영상물의 차이점을 발견하고 영상물의 비교하여 다른 영상과 비교분석하며 특징을 찾아 영상을 인식하는 것을 말한다. 예로, 지문 인식 시스템을 이용하여 범죄현장의 지문과 정부의 DB안의지문과 비교하여 범인을 추적하는 시스템, 로복의 시각 시스템과 무인 자동차의 전자눈 등이 있다.

    (4) 영상 통신 (Image Transmission)

    영상을 전송함에 있어 어떻게 효율적으로 전송할 것인가를 연구하는 분야로 영상 압축을 이용하여 영상을 처리/ 전송하는 영역이다. 디지털 영사의 막대한 용량을 압축시키는 영상압축 및 보정 기술을 필요로 하고 있다.

freebird_up.gif

3. 영상 처리의 응용 분야

    (1) 생물학 분야

      세포나 어떤 특성을 만족하는 객체들의 자동적인 계수와 분류

      DNA의 분석, 분류, 정합

    (2) 군사적 분야

      자동적으로 위성사진을 분석하여 목표물이나 적의 공항, 함정, 미사일 발사, 군사 진지 등을 탐지한다.

      목표물을 추적하고 인식하는 스마트 폭탄이나 미사일 유도 장치에 사용된다.

    (3) 문서처리

      문서를 디지털 형태로 바꾸로 압축하며 여러 가지 매체에 저장한다.

      수표나 세금 양식에 인쇄되어 있는 글자를 자동 검출 하고 인식한다.

    (4) 공장 자동화

      인간의 눈으로 놓치기 쉬운 제품의 결함이나 인간에게 위험한 작업의 자동화에 사용한다.

    (5) 의료 진단 영상 시스템

      의료 방사선 쵤영을 통하여 사람의 내부 장기를 볼 수 있다.

      X-Ray, CT 촬영

    (6) 리모트 센싱(Remote Sensing)

      인공위성은 일정한 간격으로 지구의 표면을 촬영한다.

      곡물의 작황을 분석하거나 식물의 분포, 자원 탐사 등에 이용, 고도의 자료에 의해 3차원으로 지구표면을 그릴 수 있다.

    (7) 비디오/ 필름 효과

      모핑 : 어떤 물체를 다른 모양으로 부드럽게 바뀌게 하는 특수효과

      영상 합성: 두 개의 서로 다른 화면을 하나로 합성하는 것

freebird_up.gif

 

4. 모폴로지 기법 ( Morphology )

    (1) 침식(Erosion) 연산

      물체에 대해 배경을 확장시키고 물체의 크기를 축소하는 역할을 한다.

      침식 마스크를 이용하여 연산시 흰 물체의 둘레로부터 한 픽셀을 없애는 효과를 갖는다.

    (2) 팽창(Dilation) 연산

      물체의 최 외각 픽셀을 확장하는 역할을 한다.  따라서, 물체의 크기는 확장 되고 배경은 축소된다.

      팽창 마스크는 흰색 물체의 둘레에 한 픽셀을 더하는 역할을 하는데 3 X 3 마스크와 똑같은 영역을 가지는 영역에 대해서는 값을 바꾸지 않으며 1개 이상의 서로 다른 픽셀이 존재할 경우 마스크의 가운데 픽셀에 흰색 값을 할당 하는 역할을 한다.

    (3) 열림(Opening) 연산

      침식 연산 다음에 팽창 연산을 바로 사용하는 알고리즘 이다. 즉, 원영상을 침식 연산으로 영상의 최왹각을 한 픽셀씩 없애고 다시 팽창 연산으로 최 외각을 한 픽셀씩 확장 시키는 방법이다.

    (4) 닫힘(Closing) 연산

      제거연산의 반대 기능으로  팽창연산으로 물체의 확장을 수행한 뒤 침식 연산으로 다시 축소 연산을 행한다.

      img5.gif

      원영상    

      img3.gif

      img4.gif

      침식 연산

      팽창 연산

      img6.gif

      img7.gif

      열림 연산

      닫힘 연산

[ 이진 영상에서의 모폴로지 적용 예 ]

freebird_up.gif

 

5. 기하학적 변환을 통한 영상 처리

    영상 내의 물체 사이의 공간적인 관계를 변화 하는 것으로, 물체를 이동하거나 물체의 크기, 모양을 변형 하는 것이 이에 해당한다.

    (1) 영상의 크기(Scale) 확대

      원영상을 확대하는 것은 원 영상의 각 픽셀의 좌표를 확대하려는 배율만큼 이동하는 것을 말한다. 하지만 영상 확대시 값을 할당 받지 못한 픽셀들인 존재한다. 이를 홀(Hole)이라 하는데, 빈 픽셀에 적당한 데이터 값들을 할당하여 사용하는 영상처리 방법을 보간법이라 한다.

    (2) 영상의 크기(Scale) 축소

      원영상의 크기를 작게 만들어 주는 기법이다.

    (3) 영상의 회전(Rotate) 변환

      원 영상을 원하는 각도만큼 회전 시키는 변환을 말한다.

    (4) 보간법

      영상의 크기를 확대, 축소 혹은 회전시 영상의 해상도를 높이기 위한 방법으로 최근접 이웃 보간법(nearest neighbor interpolation) 또는 0차 보간법(zero - order interpolation) 이 있다.

      * 최근접 이웃 보간법

        원하는 픽셀의 위치와 가까운 것을 사용하는 것으로 매우 간단한 방법이다. 이 방법은 빈 픽셀에 이웃하는 픽셀의 값을 할당하므로    계단 현상이 나타나며 좀 더 정확한 확대 영상을 필요로 하는 영상처리 프로그램에서는 한계가 있다. 이를 극복하는 방법으로 평균값을    이용하는 방법이 있다.

      * 쌍일차 보간법 (Bilinear interpolation)

        확대 영상에서 주변 픽셀들의 평균값을 계산하여 할당 받지 못한 빈 픽셀에 대입시키는 방법이다.

          [ 그림 설명]

    img18.gif

    img19.gif

    (a) 원영상

    (b) 보간법을 이용한확대영상

freebird_up.gif

     

6. 이진화의 종류

    (1) P-타일법(단순 임계치 방법)

      1) 정의 : 영상 중에 대상물이 차지하고 있는 면적 비율을 알고 있는 경우에 명도 히스토그램에서 그 면적 비율 P%점을 임계값으로 하는 방법

      2) 단점 : 대상물의 면적 비율을 사전에 알고 있는 경우가 거의 없으므로, 도면이나 문서 영상에서 문자 부분이 점유하고 있는 면적 비율을 어느 정도 추정할 수 있을 때 이 방법을 이용할 수 있다.

    (2) 모드(Mode)법

      1) 정의 : 히스토그램에서 산 사이의 계곡에 해당하는 명도점을 이진화의 임계값으로 하는 방법

      2) 알고리즘

      적당한 임계값 결정을 위한 Peakness 검출 알고리즘

      1. 히스토그램에서 어느 정도 이상 떨어져 있는 2개의 국부 최대점을 찾는다. 이들이 그레이 레벨 gl와 gj라고 하자
      2. 히스토그램에서 gl와 gj 사이의 가장 낮은 지점 gk을 찾는다.
      3. min(H(gi), H(gj))/H(gk)으로 정의되는 Peakness를 계산한다.
      4. 영상을 이진화하는 임계값으로는 가장 높은 Peakness를 가지는  gk를 사용한다.

      3) 임계값 결정 방법

     

    (3) 평균 이진화

      1) 정의 : 영상 안의 모든 픽셀에 대해서 평균을 구하여 그 값을 임계값으로 하는 방법

     

    (4) 반복(Iterative) 이진화

      1) 정의 : 대략적인 임계값에서 출발하여 점차 반복적으로 이 추정값을 향상시키는 방법

      2) 알고리즘

      반복적 임계값 선정 알고리즘

      1. 임계값의 처음 추정치 T를 선정한다. 영상의 평균 밝기는 좋은 출발점이 된다.
      2. 추정 임계값 T를 이용하여 영상을 2개의 영역 R1과 R2으로 구분한다.
      3. 영역 R1과 R2의 평균 그레이 값 u1과 u2를 구한다.
      4. 새로운 임계값을 다음 식을 이용하여 결정한다.
      5.        T = (u1 + u2)/2
      6. 평균 그레이 값 u1과 u2이 더 이상 변하지 않을 때까지 절차 2에서 절차 4까지를 되풀이 한다.

      3) 단점 : 장면 안의 조명이 균일하지 않은 경우에 단순 임계치 방법보다 더 나쁜 결과를 만들 수 있다.

     

    (5) 적응(Adaptive) 이진화

      1) 정의 : 전체 영상의 히스토그램을 이용하는 것이 아니라 영상의 일부분에 대한 히스토그램을 가지고 그 일부분만을 위한 임걔값을 구하는 방법

      2) 방법 : 전체 영상을 m x m개의 소영상으로 분할한 다음 각 소영상에 대하여 히스토그램을 조사하여 그 소영상에 대한 임계값 Tij (1<=i,j<=m)을 결정

     [ 적응 이진화 방법 ]

    원영상

    일반 이진화

    반복이진화

    모드법

    적응이진화

    평균이진화

     [ 이진화 예 ]

freebird_up.gif

     

7, 윤곽선 검출(Edge Detection) Mask

    윤곽선 검출 알고리즘은 여러 가지 종류가 있다. 윤곽선 검출은 미분연산자에 의한 밝기 값의 변화를 이용하여 찾아내는 것이다. 또한 편미분 연산을 이용하여 미분 값을 구하는 것도 있으며, 프로그래밍을 하는데 있어서 직접적인 계산보다는 마스크를 이용하여 빠른 계산을 하는 것이 더욱 효과적인데, 각 마스크의 특징은 마스크 내의 모든 픽셀의 합은 0이라는 것이다.

    (1) 소벨(Sobel)

      1) 특징

      • 윤곽선 검출의 가장 대표적인 미분연산자
      • 2차 미분 연산자이며, x축, y축으로 각각 한번씩 미분
      • 기울기의 크기는 [그림]이다 (단, Gx는 x축 편미분, Gy는 y축 편미분)
      • 프로그램의 간결성을 위하여 기울기의 크기를 G = |Gx| + |Gy|로 할 수 있다.

      2) 마스크

-1

0

1

-2

0

2

-1

0

1

 

1

2

1

0

0

0

-1

-2

-1

    (2) 프리윗(Prewitt)

      1) 특징

      • 소벨 필터의 결과와 거의 같은 결과 값을 나타내는데 응답시간이 약간 빠르며 마스크의 형태는 비슷하나 밝기의 경계에 대해 비중을 약간 다르게 주어서, 윤곽선 검출 시 윤곽선이 덜 부각되어 나타나도록 한다.

      2) 마스크

-1

0

1

-1

0

1

-1

0

1

 

1

1

1

0

0

0

-1

-1

-1

    (3) 로버트(Robert)

      1) 특징

      • 윤곽선 검출 마스크 중 기본이 되는 마스크이고 매우 민감한 필터이다.
      • 매우 빠른 계산 속도를 나타낸다.
      • 마스크의 모양은 45도 기울기를 가지고 있다.

      2) 마스크

0

0

-1

0

1

0

0

0

0

 

-1

0

0

0

1

0

0

0

0

    (4) 라플라시안(Laplacian)

      1) 특징

      • 연산 속도가 매우 빠르다.
      • 2차 미분 연산자를 사용한다.
      • 모든 방향의 윤곽선을 검출해 낸다.
      • 다른 연산자와 비교하여 날카로운 윤곽선을 검출해 낸다.
      • 하나의 마스크로 윤곽선 검출을 수행한다.

      2) 마스크

-1

-1

-1

-1

8

-1

-1

-1

-1

    (5) 캐니(Canny)

      1) 특징

      • 윤곽선 검출 전 잡영 제거 마스크가 사용된다.
      • 잡영에 강하다.
      • 여러 가지 윤곽선 검출 마스크를 활용할 수 있다.
      • 강한 윤곽선들만 검출된다.

      2) 방법

      먼저 가우시안 마스크를 이용하여 잡영을 제거한 후 소벨 마스크와 같은 윤곽선 검출 마스크를 수행하는 것으로, 이러한 두 번의 과정 중 춧 번째 과정에서 잡영 제거 효곽가 일어나고 잡영이 제거된 영상에서 윤곽선을 검출하는 방법이다.

      원영상

       

       

      소벨 (Sobel)

      프리윗 (Prewitt)

       

       

      로버트 (Roberts)

      라플라시안 (Laplacian)

       

       

      캐니 (Canny)

       

      [윤곽선 검출 예 ]

freebird_up.gif

 8. 마스크 연산을 이용한 필터링

     

    (1) 컨벌루션(Convolution)

    컨버루션은 영상처리에서 영상 스무딩, 예리화, 에지 검출 등을 하기 위하여 많이 쓰이는 도구이다. 컨벌루션은 입력 픽셀의 이웃에 있는 픽셀들의 가중치 합니다. 가중치는 작은 2차원 배열로 주어진다. 배열의 크기는 대개 중심이 쉽게 정해지도록 홀 수 이다. 이 배열은 흔히 컨벌루션 윈도우, 또는 컨벌루션 마스크라 불린다.

     

    (2) 고주파 차단 필터링과 블러링

     고주파 차단 필터링은 처리 대상의 영상 성분 중 저주파 성분을 유지하고 고주파 성분을 제거하는 필터를 이용하여 결과 영상을 얻어내는 것을 말한다. 고주파 차단 필터는 각 픽셀의 합이 1이 됨을 기본으로 한다. 고주파 차단 정도를 위해 중심 픽셀의 가중 값을 변경할 수 있다.

 

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

[고주파 차단 마스크]

img11.gif

img13.gif

(a)  원영상

(b) 고주파 차단에 의한 블러링

[고주파 차단 예]

     

    (3) 고주파 강화 필터링과 샤프링

  

0

-1

0

-1

5

-1

0

-1

0

[고주파 강화 마스크]

img11.gif

img12.gif

(a) 원영상

(b) 고주파 강화필터에 의한 샤프닝

[고주파 강화 예]

    (4) 저주파 차단 공간 필터

    저주파 차단 필터는 고주파 차단 필터의 작용과 반대이다. 이 필터는 저주파 성분은 손대지 않고, 고주파 성분은 강화 시킨다. 일반적인 저주파 차단 마스크는 -1로 둘러싸여 있고 중앙 위치에 9가 놓여진다.

  

-1

-1

-1

-1

9

-1

-1

-1

-1

[저주파 차단 마스크]

img14.gif

img15.gif

(a) 원영상

(b) 하이 패스 처리된 영상

[ 저주파 차단 필터의 예 ]

freebird_up.gif

9. 그밖의 다양한 영상 처리

    (1) 세선화

    세선화란, 두꺼운 선을 하나의 선으로 즉 , 두께가 한 픽셀로 이루어진 중심선을 추출하는 기법을 말한다.

    세선화 알고리즘에서 지켜야될 몇가지 제약점이 있다.

    • 한 픽셀 두께의 영역으로 되어 있어야 한다.
    • 영역의 단면의 중심에 위치해야 한다.
    • 세선을 이루고 있는 중심에 위치해야 한다.

 

img16.gif

img17.gif

원영상

세선화

    (2) 투영 (Projection)

    이진 영상을 수평이나 수직 방향으로 투상하는 것은 수평이나 수직 방향의 라인상에 존재하는 픽셀값이 1인 픽셀의 갯수를 세는 것이다.

freebird_up.gif

 

[ 참고 서적]

[1] " 기초편 영상처리 ", 천인국, 윤영택 편저, 기한재 (1999)

[2] " 디지털 영상처리의 구현", 장동혁 저, PC 어드밴스 (1999) 

 

출처 : 부산대 N.R. Lab.

[출처] 이미지 프로세싱|작성자 깜보

'프로그래밍 > 스크랩' 카테고리의 다른 글

QR 코드 인신 실패  (0) 2011/06/07
QR코드 원리  (0) 2011/06/07
이미지 프로세싱 기본 원리  (0) 2011/06/07
차세대 동화상 부호화 방식 H.264  (0) 2011/06/07
유용한 영상처리 메소드  (0) 2011/06/07
이미지 프로세싱  (0) 2011/06/07
posted by zerowns

티스토리 툴바