Yes24위대한게임의탄생사이드바

위대한 게임의 탄생 2
[예약판매] 위대한 게임의 탄생 2
박일 편
예스24 | 애드온2

블로거뉴스 인기 뉴스

트위터위젯


알라딘MGG와이드바


[책] 위대한 게임의 탄생 2 순항중입니다.

위대한 게임의 탄생 2권 순항중입니다.
Yes24 5월 1주 26위, 5월 2주 11위를 기록했네요.
1권보다 책이 두꺼워져서 그런지 아직 서평이 올라오지 않은게 맘에 걸립니다만, 책에 들어있는 여러 개발자들의 노력과 노하우가 게임과 소프트웨어, 그 외에도 새로운 것을 창조하는 모든 분들에게 도움이 될 거라 생각합니다.
혹시 제 주변에 책 사신 분 있으면 저에게 보여주세요. 바로 커피 한 잔 쏩니다. :)
감사합니다.


2012년 5월 2주 컴퓨터와 인터넷 주별 베스트

전주 월요일~일요일의 판매 데이터를 기준으로 집계되었습니다
11.위대한 게임의 탄생 2

[도서] 위대한 게임의 탄생 2 : 좋은 게임을 넘어 위대한 게임으로 새창

박일 편 | 지앤선(志&嬋) | 2012년 04월

28,000원 →25,200원(10% 할인) | YES포인트 2,520원(10% 지급)

도착 예상일 : 지금 주문하면 내일 받을 수 있습니다.

수량 

카트에 넣기

리스트에 넣기

바로 구매하기

2012년 5월 1주 컴퓨터와 인터넷 주별 베스트전주 월요일~일요일의 판매 데이터를 기준으로 집계되었습니다

26.위대한 게임의 탄생 2

[도서] 위대한 게임의 탄생 2 : 좋은 게임을 넘어 위대한 게임으로 새창

박일 편 | 지앤선(志&嬋) | 2012년 04월

28,000원 →25,200원(10% 할인) | YES포인트 2,520원(10% 지급)

도착 예상일 : 지금 주문하면 내일 받을 수 있습니다.

수량 

카트에 넣기

리스트에 넣기

바로 구매하기


위대한 게임의 탄생 2
위대한 게임의 탄생 2 
박일 편
예스24 | 애드온2

공유하기 버튼

 

위대한 게임의 탄생 2권 예약판매 시작합니다.

위대한 게임의 탄생 2
[예약판매] 위대한 게임의 탄생 2 
박일 편
예스24 | 애드온2

[http]알라딘 : 위대한 게임의 탄생 2 - 좋은 게임을 넘어 위대한 게임으로

드디어 위대한 게임의 탄생 2권이 출간됩니다. 아마 5월 4일부터 책을 받아 보실 수 있을 거 같습니다.
1권은 350 페이지, 외국게임 10 개, 한국게임 6 개, 직군인터뷰 11 개였고
2권은 540 페이지, 한국게임 18 개, 직군인터뷰 8 개, 한국소프트웨어 6 개가 수록되어 있습니다.
책이 나오기 전에 알파리딩을 해 봤는데 많은 분들이 한국 게임 개발 후기가 좀 더 공감되는 부분이 많다고 하더군요.
저도 책 준비하면서 여러 번 읽었습니다만, 그 때마다 새로운 것을 느낄 수 있었습니다. 많이 기대해 주세요. 감사합니다.

Part 1 위대한 게임의 탄생

Chapter 1 건즈 더 듀얼
잘된 점
명확한 게임 콘셉트와 방향성 
이전 프로젝트의 코드에서 많은 부분을 재사용했다 
수평적인 개발구조와 프로젝트에 대한 주인의식 
다른 슈팅 게임에는 없었던 실험적이고 과감한 콘텐츠들 
유저들의 피드백을 공격적으로 개발에 반영했다 
아쉬웠던 점 
초보자에 대한 배려가 부족했다 
게임핵을 케이스별로 방어하다가 너무 많은 개발력을 소모했다 
콘텐츠 제작환경 개선과 리팩토링을 소홀히 했다 
성장과 보상의 플레이 경험에 대한 준비가 소홀했다 
작은 팀이 성공한 뒤 준비해야 할 것들 
정리

Chapter 2 드래곤네스트
잘된 점 
액션! 액션! 액션! 
생산성을 극대화하는 개발 툴과 시스템 
해외 서비스에 최적화된 개발 관리 조직과 시스템 
아쉬웠던 점 
기획의 큰 그림 부족 
콘텐츠에 집중! 콘텐츠를 이끄는 기반에는 소홀 
크런치 기간을 잘 활용해도 탈이다 
스튜디오 인력 규모 증가에 대한 대비 미흡 
정리 
직군 인터뷰 : 기획자 

Chapter 3 롤링콩즈
잘된 점 
소규모 팀 + 점진적 반복개발 
합리적인 개발 목표 
게임 플레이의 핵심은 퍼즐 
터치 인터페이스에서의 손맛 
적절한 그래픽과 사운드 
아쉬웠던 점 
프로젝트 목표 
프로젝트 방향 
그래픽 방향 
디렉팅, 프로듀싱 리더십의 공백 
사업 대응 미흡 
정리 
직군 인터뷰 : 퍼즐게임 디자이너 

Chapter 4 리니지
잘된 점 
테스트 담당자가 검증하지 못하는 부분을 찾고자 했다 
장애 재발을 방지하려고 노력했다 
서버 프로그램에 시스템 로그를 다양하게 남겼다 
BOT를 비롯한 보안 취약점을 전문 인력으로 적극 대응했다 
알림 기능을 활용했다
아쉬웠던 점 
업무 진행 내역 관리 및 문서화를 잘 하지 못했다 
개발실 내에서 다양한 새로운 도전을 하지 못했다 
UI 개선에 적극적이지 못했다 
해외 서비스 특화와 상황 대응이 부족했다 
게임 로그 데이터 분석을 잘 활용하지 못했다 
정리 

Chapter 5 마계촌 온라인
잘된 점 
IP 게임의 효과 
자유롭고 수평적인 개발 문화 
콘셉트 기획의 부재 시기에도 리소스를 미리 준비할 수 있었다 
마계촌 온라인만의 게임성을 개발했다 
유저 테스트 결과와 피드백을 반복적으로 반영했다 
아쉬웠던 점 
원작의 게임 요소를 계승하기는 어려웠다. 
부족한 완성도 상태에서 유저 테스트를 진행했다 
QA팀이 늦게 꾸려졌다 
수정 개선과 QA 시간을 얕보았다 
온라인 RPG의 기본 시스템 개발을 과소평가했다 
정리 
직군 인터뷰 : 게임 라이터 

Chapter 6 범핑 베어
잘된 점 
다양한 개발 프로세스를 경험했고, 팀에게 맞는 방식을
찾을 수 있었다 
출시 후 유저의 반응과 플레이 데이터를 기반으로 게임을
개선했다 
막판에 게임의 핵심 Play Loop를 완전히 바꿨다 
유저에 전달하고 싶은 분위기에 맞게 세계관과 아트
스타일을 바꿨다 
FGT 결과를 개발 방향에 적극 반영했다 
아쉬웠던 점 
접근성이 낮은 Bump기능에 시간, 노동력, 게임 용량을
너무 많이 할애했다 
유무선 연동을 위해 페이스북 로그인을 필수로 설정했는데,
연동을 포기할 때 이를 바꾸지 못했다 
기능과 연출에 대한 욕심을 적절한 타이밍에 버리지 못했다 
디자인에 큰 변화가 많았고, 이것이 개발팀 전체의
스트레스로 이어졌다 
QA와 디버깅 시간이 부족했다 
정리 

Chapter 7 사이퍼즈
잘된 점 
많은 테스트를 통해 새로운 재미를 찾아냈다 
청소년기의 로망‘액션’
모든 캐릭터가 주인공이다 : 사이퍼즈의 초능력자들 
거부감이 적었던 유료화 
하루에 게임은 두 시간만 하세요 : 버닝 게이지 
아쉬웠던 점 
개발팀과 유저들의 시각 차이 : 콘텐츠 부족 
간과해서는 안 되는 부분 : 그래픽 퀄리티 
통일성을 잃게 되는 즉흥적 콘텐츠 추가 
마을의 존재 이유 
매칭 대기 시간에 무엇을 할 수 있을까? 
정리 
직군인터뷰 : TA 

Chapter 8 Sugar Cube : Bittersweet Factory
잘된 점 
섣불리 콘텐츠를 추가하기보다 기존의 단점을
개선하려고 힘썼다 
바로 플레이 가능한 레벨 디자인 툴을 이용해 개발
초기부터 여러 가지 실험을 할 수 있었다 
게임 내 그래픽 리소스의 폴리싱에 많은
신경을 썼다 
개발 중 인디 게임 전문가들에게 지속적인
피드백을 받았다 
첫 기획부터 다양한 활용을 염두에 두고 개발을 시작했다 
아쉬웠던 점 
일정관리 실패 : 기간이 예상보다 두 배나 걸렸다 
프로그래머 교체를 대비한 코드 가이드라인을
작성하지 않았다 
개발 방법론의 부재가‘방망이 깎듯 게임 만들기’의
결과를 낳았다 
기획서 없는 게임 개발로 인해 의사 소통의 혼란이
발생했다 
멀티 플랫폼 대응에 실패했다 
정리 

Chapter 9 실크로드 온라인
잘된 점 
세계화에 주슷하다 
동양적 환타지를 어필하다 
쉬운 접근성 
글로벌 서버와 롱테일의 경제학 
결제 수단의 확보 
아쉬웠던 점 
온라인 게임 개발 경험의 부재 
콘텐츠의 부족 
고객과 서비스 관리 
대표 콘텐츠의 실패 
유저 어뷰즈 대처 미숙 
오토(봇) 캐릭터 문제 
정리 
직군 인터뷰 : 그래픽 프로그래머 

Chapter 10아이온 오디오
잘된 점 
프로덕션 초기 단계에서부터 함께했다 
CryEngine을 사용했다 
기획팀(혹은 개발팀) 내에 있었다 
시행착오 과정을 조기에 거쳤다 
아쉬웠던 점 
개발 도중 팀이 분리되었다 
일정 관리가 충분하지 못했다 
넘치는 의욕을 조절하지 못했다 
게임 음반을 제작했다 
정리 

Chapter 11 암중모색
잘된 점 
당시 개발 경험이 부족했던 팀이 게임을 해석할 수 있는
주관을 갖게 되었다 
게임 내의 완결된 표현성을 구축하기 위해 충분한
실험을 했다 
작업자들 전체가 통일된 스타일을 구축했다 
거대했던 서사와 작업량을 미련 없이 축소했다 
실험적인 게임이었지만 인디케이드에 출품하는 등
알리기 위한 노력을 기울였다 
아쉬웠던 점 
게임 완성 이후의 계획에 대해 많이 생각하지 못했다 
초기에 너무 어지러운 계획을 세웠다 
기술 관점에서 시간 투자를 거의 하지 못했다 
시간 운용을 효과적으로 하지 못했다 
게임 스타일을 응용할 범주를 찾아내려는 노력을 충분히
하지 못했다 
정리 
작가주의적 게임의 가능성 
직군 인터뷰 : 레벨 디자이너 

Chapter 12 어이쿠! 왕자님 ~호감가는 모양새~
잘된 점 
오래 호흡을 맞춰 신뢰가 쌓인 팀원들 + 의기투합할 수
있는 목표 
타깃 유저 층의 입장에서 생각하고 만들어 공감을
이끌어 냈다 
유저들이 콘텐츠를 생산할 수 있는 툴을 제공해
게임의 수명을 늘렸다 
블로그에 개발 과정을 만화로 공개해 유저들의 관심을
유지하고 인지도를 높였다 
적극적인 부가 상품을 개발했다 
아쉬웠던 점 
독창성에 대한 아쉬움 
수치 밸런스를 잡지 못해 유저들이 의도한 대로 엔딩을
보기 힘들었다 
아마추어와 프로의 경계 
프로젝트 매니지먼트에 대한 이해 부족 
발매 후 서비스의 어려움 
정리 

Chapter 13 작룡문
잘된 점 
숙련된 팀워크 
언어의 장벽을 해결했다 
안전보다는 도전을 선택했다 
개발 기간이 길어짐으로 인해 완성도를 높일 수 있었다 
개발자들의 열정과 성공에 굶주렸다 
아쉬웠던 점 
그럼에도 불구하고 일본마작의 심오한 부분을 이해하기까지
많은 시간이 소요되었다 
사업 방향의 양면성(매출 ↔ 고객 확보)에 대한 오랜 갈등 
OBT 기간이 너무 길었다 
‘상용 엔진을 사용했더라면’하는 아쉬움 
온라인 마작게임에 적합한 서비스 환경을 마련하지 못했다 
정리 
직군인터뷰 : 디렉터 

Chapter 14 카발 온라인
잘된 점 
기획-개발-그래픽 작업의 동시화 
욕심을 버렸다 
카발 온라인은 정말 가볍다 
카발 온라인에는 분명한 메시지가 있었다 
컴퓨터 앞에만 앉아 있는 GM이 없었다 
아쉬웠던 점 
게임은 어떻게 만드는 거지? 
단기적인 퍼포먼스에 의존했다 
게임만 만들면 되는 줄 알았다 
아쉬움이 남는 해외 진출 
이렇게 오래 사랑받을 줄 몰랐다 
정리 

Chapter 15 테일즈런너
잘된 점 
자유로운 사내 문화, 개발 환경 
퍼블리셔와의 돈독한 신뢰관계 
재미에 대한 다양한 시도 
우리만의 색깔 
지속적인 개발과 업데이트 
아쉬웠던 점 
부족한 인력 
미래에 대한 준비 부족 
고정된 타깃 유저층 
글로벌 서비스에 대한 사전지식 부족 
유지보수의 필요성 
정리 
직군 인터뷰 : 게임 오디오 디렉터 

Chapter 16 투혼
잘된 점 
비전 공유 
Lua Script를 활용한 빠른 프로토타이핑 
컴팩트한 개발팀과 흡연실 회의 
유니크한 장르 설정 
아쉬웠던 점 
디렉터와 PD의 겸업 
자금 수급 계획의 미스 
사업, 홍보 인력의 부재 
잘못된 의뢰 요청 
가난 
정리 
직군인터뷰 : 배경 아티스트 

Chapter 17 프로야구매니저
잘된 점 
과감하지만 신중한 결정 
부서 간 경계가 없는 협업과 소통 
좋은 시도로 잘 지켜진 개발 일정 
원작을 이해하고 한국 시장에 맞는 게임을 만들었다 
유저의 소리를 열심히 듣고 실천했다 
아쉬웠던 점 
개발 초기의 시행착오 
최적화 작업이 늦어지면서, 업데이트가 진행될수록
게임이 무거워졌다 
중요 마일스톤에서의 이슈들 
외부 요인을 예측하지 못해 개발팀이 계획했던 콘텐츠의
개발 우선순위가 낮아졌다 
업데이트 타이밍에 대한 실수 
정리 

Chapter 18 Heroes In the Sky
잘된 점 
Easy to EASY 
유저 VS 유저, 진영 VS 진영, 서버 VS 서버 
기체를 살리는 것이 포인트였다 
해외 유저를 가장 잘 알고 있는 것은 해외 퍼블리셔라는 믿음 
신입의 목소리가 곧 유저의 목소리다 
아쉬웠던 점 
의욕 넘치는 업데이트가 시스템의 안정성을 보장해
주지는 않는다 
업데이트 때마다 ?런스 맞추기가 어려웠다 
메인 스토리가 모든 이에게 흥미를 주진 못했다 
어려운 것은 더 이상 재미 요소가 아니다 
무조건 많다고 좋은 것이 아니다 
정리 
직군 인터뷰 : QA 


Part 2 위대한 게임팀의 공통점
Chapter 19 위대한 게임 개발팀의 공통점 

Chapter 20 네이버 스포츠 서비스 : 2010 남아공 월드컵특집서비스
잘된 점 
진행 상황에 대한 높은 가시성 
P2P 기반의 고화질 영상 서비스 도입 
명확한 프로세스와 잘 훈련된 팀원들 
명확한 목표와 비전 
적절한 협업 환경 마련 
아쉬웠던 점 
초기 기획 단계가 오래 걸렸다 
테스트 환경 구축이 어려웠다 
새로운 개발 기법이나 기술 적용이 활발하지 못했다 
잦은 서비스 배포에 시간적 비용이 증가했다 
정리 

Chapter 21 게임 엔진 프라우드넷
잘된 점 
과거 개발 경험의 활용 
외주를 하지 않고 선택과 집중 
엔진 사용자들의 기능 요청에 조기 대응 
정성 들인 기술 지원 서비스 
제공하는 피처 각각의 최상의 품질 유지하기 
아쉬웠던 점 
C#으로 개발하고 C++로 포팅하기 
1인 개발자 체계의 뒤늦은 탈피 
본 개발과 기술 지원의 혼재와 혼란 
수요를 정확히 파악하지 않은 피처의 기대 이하 성과 
미숙한 비즈니스 
정리 

Chapter 22 Daum 검색플랫폼 K3
잘된 점 
개발에서 먼저 제안하는 새로운 시도 
기획팀과 개발팀이 토론하는 문화 
Pair로 개발하는 문화 
사용자 스토리를 중심으로 개발 
커뮤니티를 통한 가볍고 밀접한 커뮤니케이션 
아쉬웠던 점 
지리적으로 떨어진 개발 환경(서울-제주) 
‘의지치’가 많이 반영된 개발 일정 
테스트를 주기적으로 하지 못했다 
프로젝트 리더의 역할에 대한 서로 다른 기대치 
추가 구현사항에 대해서 리소스로의 전환 
정리 

Chapter 23 미투데이
잘된 점 
이용자와 밀접한 소통 
기민한 개발 프로세스 
강력한 모바일 지원 
매시업과 오픈 API 
아쉬웠던 점 
매시업의 한계 
모바일 한계와 늦은 스마트폰 출시 
부족했던 시스템 엔지니어링 
정리 

Chapter 24 Project-U Prototype Project
잘된 점 
고객과의 신뢰 형성 
불필요한 문서 작업의 종말 
개발과 관리를 위한 도구의 사용 
일상적인 짧은 회의 
두려움이 없는 반성 
아쉬웠던 점 
혼자 폭탄을 들고 자폭한 일벌레의 남겨진 후회 
우리만의 추억으로 남겨진 행복한 개발 과정 
도전보다 안전을 택했다 
작은 규모의 인원을 유지하지 못했다 
정리 

Chapter 25 H-CAD 프로젝트 
잘된 점 
요구사항을 철저하게 작성했다 
프로토타이핑을 만들어서 시연했다 
신입사원의 능력을 향상시키는 데 짝 프로그래밍이
효과적이었다 
버전 관리를 철저하게 사용했다 
협력업체와 동반자 관계를 형성했다 
아쉬웠던 점 
요구사항과 설계를 혼동했다 
요구사항 명세 작성이 쉽지 않았다 
TDD 적용에 실패했다 
정리  

위대한 게임의 탄생 2
[예약판매] 위대한 게임의 탄생 2
박일 편
예스24 | 애드온2

공유하기 버튼

 

GameTech 2012 강연 + 위대한 게임의 탄생 2쇄

게임테크 2012 에서 '포스트모템으로 살펴보는 위대한 게임팀의 공통점'이라는 제목으로 강연 잘 끝냈습니다.
강연장을 꽉 채우고도 자리가 부족해 앞에 주저앉아서, 또는 뒤에 서서 지켜봐주신 많은 분들 감사드립니다.

강연때도 말씀드렸지만 '위대한 게임의 탄생 2'는 4월 말 출간예정입니다.
원고는 이미 마감했고, 교정단계가 끝나면 바로 인쇄들어갑니다.
예판 들어가면 다시 알려드리겠습니다.
http://www.facebook.com/BirthOfGreatGames 로도 계속 소식 전하고 있으니 참고하세요.

그리고 위대한 게임의 탄생 1권이 2쇄 들어갔습니다.
지금까지 책을 여러 권 번역했지만 2쇄 들어간 책은 위대한 게임의 탄생이 처음이네요.
일부 서점의 품절 상태는 조만간 해결될 예정입니다.
앞으로도 잘 부탁드립니다.

건의 사항이나 포스트모템 싣고 싶으신 분들은 언제든지 알려주세요.
위대한 게임의 탄생 3권도 곧바로 작업 들어갈 예정입니다.
감사합니다.

위대한 게임의 탄생
Michael Thornton Wyman 저/박일 역
예스24 | 애드온2

공유하기 버튼

 

GameTech 2012 에서 '포스트모템으로 살펴보는 위대한 게임팀의 특징'이라는 제목으로 강연을 합니다. 모임

거의 두달만에 블로깅을 하네요.
2012년 3월 28일 다음 주 수요일 잠실 롯데호텔 3층에서 열리는 GameTech 2012 에서
'포스트모템으로 살펴보는 위대한 게임팀의 특징'이라는 강연을 합니다.
뭔가 제목이 엄청 거창하지만 알고 보면 작년에 나왔던 '위대한 게임의 탄생' 과
올해 4월 출간 예정인 '위대한 게임의 탄생 2'에 수록된 한국 게임 포스트모템에서 볼 수 있는
게임 개발팀들의 특징을 정리해서 발표해 보려고 합니다.

대부분 알고 있는 일반적인 내용이어서 큰 인사이트는 없을 거 같지만
한 번쯤 각자 개발팀의 개발 방식을 되돌아보는 기회는 되지 않을까 생각합니다.
그럼 수요일에 뵙겠습니다. :)

공유하기 버튼

 

[번역글] Box Filtering (박스 필터링) 개발 이야기

filtering 을 보다가 [http]Tech-Algorithm.com 에서 Box Filtering 에 대해 쓴 재미있는 블로깅이 있어서 간단 번역해 올립니다. 더 재미있는 것인 필자가 예제 이미지로 리니지2 를 썼다는 점. :) box filtering 이나 convolution 에 대해 개념이 거의 없는 상태에서 쓴 글이라 이상한 부분이 있으면 얘기해주세요. 감사합니다.

Box filtering
tech-algorithm.com

box filtering 은 근본적으로 주변 픽셀값의 평균을 얻는 방식의 이미지 필터링이다. 사실상 이미지 필터링을 위해 흔히 쓰는 수학 연산으로 된 convolution filter 이기도 하다. convolution filter 는 두 개의 배열을 곱해서 제 3의 배열을 만들어낸다. box filtering 에서는 이미지 샘플과 filter kernel 를 곱해서 필터링된 결과값을 얻는다. filter kernel 이란 실제로 어떻게 필터링 할지를 정의하는 일종의 명세라고 할 수 있다. box filtering 의 좋은 점은 적당한 filter kernel 만 제공한다면 쉽게 sharpen, emboss, edge-detect, smooth, motion-blur 같은 이미지 필터를 작성할 수 있다는 점이다.

이만하면 소개는 충분한 듯하니, box filtering 과 filter kernel 이 얼마나 끝내주는지 살펴보자. 앞에서 filter kernel 이 filter 타입을 정의한다고 했는데, 뭘 어떻게 한다는 걸까? 한 픽셀보다는 큰 네모난 유리를 kernel 이라고 생각하고 이를 이미지 위로 쭉 훑어지나간다고 상상해 보자. 이때 kernel 은 계속해서 유리를 통해서 보이는 픽셀들의 평균값을 계산한다.

bf-img01.png


filter kernel 의 최소 표준 크기는 위 그림에서 보는 것처럼 3 x 3 이다. filter kernel 은 샘플 이미지 안에 들어가야 한다는 규칙 때문에, 이미지의 테두리에는 filtering 을 적용할 수가 없다. 물론 좀 신경쓰면 테두리도 처리할 수 있지만 지금은 먼저 기본적인 기능부터 돌아가게 만들어 보자. 서론이 길었다. 당장 구현 코드를 살펴보자!

public int[] BoxFiltering(
        int[] pixels,int width, int height, float[] kernel) {
    int[] temp = new int[width*height] ;
    float denominator = 0.0f ;
    float red, green, blue ;
    int ired, igreen, iblue, indexOffset, rgb ;
    int[] indices = {
        -(width + 1),  -width,     -(width - 1),
        -1,                0,           +1,
        width - 1,      width,      width + 1
    } ;
    for (int i=0;i<kernel.length;i++)
        denominator += kernel[i] ;
    if (denominator==0.0f) denominator = 1.0f ;
    for (int i=1;i<height-1;i++) {
        for (int j=1;j<width-1;j++) {
            red = green = blue = 0.0f ;
            indexOffset = (i*width)+j ;
            for (int k=0;k<kernel.length;k++) {
                rgb = pixels[indexOffset+indices[k]] ;
                red += ((rgb & 0xff0000)>>16)*kernel[k] ;
                green += ((rgb & 0xff00)>>8)*kernel[k] ;
                blue += (rgb & 0xff)*kernel[k] ;
            }           
            ired = (int)(red / denominator) ;
            igreen = (int)(green / denominator) ;
            iblue = (int)(blue / denominator) ;
            if (ired>0xff) ired = 0xff ;
                else if (ired<0) ired = 0 ;
            if (igreen>0xff) igreen = 0xff ;
                else if (igreen<0) igreen = 0 ;
            if (iblue>0xff) iblue = 0xff ;
                else if (iblue<0) iblue = 0 ;           
            temp[indexOffset] = 0xff000000 | ((ired<<16) & 0xff0000) |
                    ((igreen<<8) & 0xff00) | (iblue & 0xff) ;
        }
    }
    return temp ;
}

자바 코드 설명

인자로 넘어온 pixels 배열에는 전체 너비 * 높이 pixel 값이 들어있다. kernel 인자는 크기가 9인 배열이다. 즉, 이 코드에서는 kernel 의 크기를 3*3 으로 가정한다. 또한 각 pixel 은 ARGB(alpha, red, green, blue) 형식이라고 가정한다. alpha 는 투명도 값이라 여기에서는 건드리지 않는다. indices 배열은 주변 픽셀을 찾기 좋도록 만든 테이블이다. denominator(분모) 는 인자로 넘어온 kernel 배열값의 합으로 나중에 filter kernel 에서 평균을 계산할 때 사용한다.

여러 다른 kernel 을 썼을 때 결과가 어떻게 달라지는지 이미지로 확인해 보자. 샘플 이미지는 리니지2 이다.

Original unfiltered image.
bf-kernel-nofilter.gif

la2-nofilter.png


Smoothing (평활화)
bf-kernel-smooth.gif

la2-smooth.png


Sharpening
bf-kernel-sharpen.gif

la2-sharpen.png


Raised
bf-kernel-raise.gif

la2-raise.png


Motion-blur (Blurring 을 몽롱화라고 번역하기도 하는군요)
bf-kernel-mblur.gif

la2-motionblur.png


Edge detection
bf-kernel-edge.gif

la2-edge.png
 

[http]Box Filtering Java applet interactive demo 에서는 행렬에 값을 넣었을 때 이미지가 어떻게 달라지는지를 바로 확인해 볼 수 있다.



공유하기 버튼

 

1 2 3 4 5 6 7 8 9 10 다음



Google Analytics