OpenCV 중에서 cvcam 을 이용해 카메라에 연결하고 영상을 받아서 파일로 저장하는 클래스와 이를 이용한 예제 응용 프로그램입니다. cvcam으로 카메라에 연결하면 보통 창을 띄워서 프리뷰를 계속 돌리는데, 창이 새로 뜨는게 싫다면 참고해보세요.
첨부된 압축파일을 풀고 debug 폴더를 보면 실행파일과 실행에 필요한 dll 파일들이 있고.. proxytrans.ax 모듈을 등록해줘야 하는데 이건 RegisterModule.bat 파일을 실행하면 됩니다.
메모리 주소로 넘겨주는 캡쳐는 파일로 저장한 것을 단순히 메모리에 적재시켜서 주소와 길이를 넘겨주는 것이므로 착오 없기를 바랍니다. JPEG 파일을 그대로 메모리에 올려달라고 요구해서리.. OpenCV에는 JPEG 파일로 저장하는거 말고 변환만 하는 그런 함수같은게 없는 것 같드라구요. c_temp.jpg로 일단 파일 캡쳐를 한 후 이걸 메모리로 불러와서 주소를 넘겨줍니다. 제대로 넘어왔는지 확인해보기 위해 응용에서 그대로 test.jpg 라는 파일로 저장을 하는 것이구요.
용량 관계로 OpenCV는 포함하지 않았으므로 OpenCV 1.0을 설치 후 컴파일 가능하며, 아마 DirectX SDK도 설치해야 돌아갈겁니다. 최신의 DirectX SDK는 directshow 관련 샘플들이 없어서 그냥 9.0 SDK로 설치해서 작업했네요. 이런 저런 경로 설정은 알아서들 하시구요. VS.NET 2005 에서 작업했습니다. Release 빌드하면 어째선지 비스타에서 문제가 생기네요. XP에선 별 문제 없던데.
자세한 내용은 첨부된 압축파일을 풀고 나오는 doc 파일을 보시기 바랍니다.
Updated : 2008. 07. 29 Mutex & Event 를 사용해서 스레드 동기화 : 작업 완료 시기와 결과 반환 시기가 일치함 파일 저장 후 이를 다시 메모리에 적재해 주소를 반환하는 것은 의미가 없어서 그냥 삭제 MFC제공 함수 배제(CCamControl 클래스에 한함. win32 console, win32 app 등에서 문제 없도록)
모터로 상하좌우 각도 조정이 되는 로지텍 퀵캠 스피어 MP / AF 모델에 한해 팬/틸트를 제어하는 클래스와 이를 이용한 응용입니다. DirectX SDK가 설치되어 있어야 하며, VS.NET 2005 에서 작업했습니다. 드라이버 11.1 이상인 제품에서만 동작하는데, 그런 이유로 구형 모델인 퀵캠 스피어(드라이버 버전 10.5)에서는 작동하지 않습니다.
구형 제품을 가지고 있었는데 이것때문에 신형을 하나 더 샀습니다(제가 산 건 아닙니다만). 근데 신형 AF 모델이 좋긴 좋네요, 무려 ZEISS 렌즈(!)에 AF.. 저광도 노이즈도 훨씬 적고 초당 프레임도 잘 뽑아내네요.
SONY | CYBERSHOT | Program | Auto W/B | 1/40sec | F2 | 9.7mm | ISO-100 | No Flash
애물단지. 차에 거치대 놓고 쓰려고 차량용 어댑터를 샀더니만 맞는 단자가 하나도 없네. 그래서 어댑터 끝을 잘라서 번갈아가며 쓰려고 RCA잭(2극)으로 이으려고 했더니만.. 알고보니 M1210은 전용 어댑터 확인을 위한 라인이 하나 더 들어가 있단다. 이미 선 다 잘라서 이어보고 안 것이지만.
SONY | CYBERSHOT | Program | Auto W/B | 1/30sec | F2.2 | 16.4mm | ISO-160 | No Flash
단순히 전원 두 가닥만 연결하면 노트북은 전용 어댑터가 아니라고 판단, 배터리 충전도 안 하고 CPU도 50% 정도로만 돌아간다. 뭐 어쨌든 배터리 없이 돌아는 간다. 차에서 쓰기엔 별 문제 없는 상황. 하지만 두 가닥만 연결해서 전용 어댑터까지 이래버리면 곤란하잖아.
SONY | CYBERSHOT | Program | Auto W/B | 1/30sec | F2.1 | 13.5mm | ISO-250 | No Flash
그렇다고 기껏 사놓고 선까지 잘라놓은 요 어댑터를 버리긴 좀 아깝고. 차에서 배터리 언제 떨어질까 벌벌 떨면서 운전하다 노트북 켜고 끄고 하는 것도 못할 짓이고. 그래서 3극 이상, 암/수 단자로 뭐가 있을까 찾아보니.. USB가 딱이네 글쎄.
SONY | CYBERSHOT | Program | Auto W/B | 1/30sec | F2.2 | 17.9mm | ISO-320 | No Flash
이런 식으로 전용 어댑터, 차량용 어댑터와 USB포트를 연결해 주고..
SONY | CYBERSHOT | Program | Auto W/B | 1/50sec | F2 | 9.7mm | ISO-100 | No Flash
어댑터 단자 부분은 USB(F)를 연결. 적당한 크기의 수축튜브가 없던 관계로 그냥 절연테잎으로 대충.
SONY | CYBERSHOT | Program | Auto W/B | 1/30sec | F2 | 9.7mm | ISO-120 | No Flash
이러면 전용 어댑터는 문제 없이 쓸 수 있고.. 차량용 어댑터도 제한적이나마(충전 안 됨) 사용 가능.
이 짓 하다가 차량용 어댑터부분 납땜 반대로 해서 노트북 전원 입력부분 날려먹었음. 다행히 보드 교체를 받기는 했지만 극성 잘못 연결하면 하늘이 노래지니 테스터로 극성 꼭 확인할 것. 이상.
30인치 WQXGA+ 패널이 추석 이후 갑작스레 싸게 풀린 덕분에 50만원 초반이라는 어이없는 가격에 30인치 모니터를 구할 수 있게 됐습니다. 추석 전후로 무슨 일이 있었는지 알 바는 아니고, 소비자 입장에선 그저 좋은 제품 싸게 살 수 있으면 그걸로 된거겠죠. 소개할 제품은 소규모 LCD 모니터 생산 판매업체인 마이크로보드에서 생산/판매하는 XF(X-Finder) 310 입니다.
주요 사양
XF 310 에는 다양한 종류의 LCD 패널이 들어갑니다만, LG Philips LCD에서 제조한 LM300W01-STA4 패널이 가장 많이 채택돼 판매되었을거라 짐작됩니다. LM300W01 패널은 여러 버전이 있는데, 각 버전별 사양은 찾아볼 수 없네요. STA4 버전이 가장 최근에 나온 것임을 감안하면 현재 30인치 패널 중 가장 최신형인 LM300WQ3와 동일 시기에 제조된 LM300W01 패널의 사양과 일치할 거라 생각합니다.
표시 해상도
2560 x 1600 (WQXGA+)
화면 비율
16:10
표시 색상 수
16.7M (8bit)
화면 밝기
400 cd/㎡ , 8단계 조절
색 재현율(NTSC 1953)
72%
명암비
700:1
시야각
178 / 178
응답속도
8ms GTG
화면 크기
641.28 x 400.8 mm
LM300WQ3 패널과 비교했을 때 차이가 있는 부분은 색 재현율과 명암비, 화면 밝기 정도고, 나머지는 거의 똑같습니다. 색 재현율 92% 패널은 기존의 LCD 패널에서 백라이트유닛만 WCG-CCFL 로 변경한 것에 지나지 않기 때문에 색 재현율을 제외한 나머지 특징은 동일하다고 생각하면 됩니다. 요즘에는 6bit-FRC TN 패널에도 WCG-CCFL 넣어서 색 재현율 92%라고 내놓기도 하는데요 뭐.
외형
XF 310 하우징은 알루미늄 재질로 블랙 / 화이트 / 실버 세 가지 색상 중 하나를 선택할 수 있습니다. 제가 구입한 건 블랙 컬러였고, 블랙 / 화이트는 분체도장, 실버는 아노다이징 표면처리를 합니다. LCD 패널 뒤쪽에 철제 브라켓을 고정하고 여기에 스탠드와 알루미늄 하우징이 덧붙여지는 구조입니다.
SONY | DSLR-A100 | Program | Auto W/B | 1/50sec | F4 | 28mm | 35mm equiv 42mm | ISO-400 | No Flash
일단 크기 비교부터 하고 넘어가죠. 왼쪽이 LM230W02 패널이 들어간 23인치 모니터, 가운데는 12.1인치 노트북, 그리고 오른쪽이 주인공 XF 310 되겠습니다. 23인치 모니터가 심하게 기울어있어 카메라와 가까운 왼쪽 부분이 꽤 큰 것처럼 나왔지만.. 30인치에 비하면 상당히 작아보이네요. 노트북이야 뭐.. -_-;
SONY | DSLR-A100 | Program | Auto W/B | 1/20sec | F4.5 | 70mm | 35mm equiv 105mm | ISO-400 | No Flash
모니터 가운데 아랫부분에는 금도금 메탈스티커로 제작된 마이크로보드 심볼이 붙어 있습니다. 모니터 오른쪽 아래의 전원/밝기조절 부분도 크롬도금한 메탈스티커입니다.
SONY | DSLR-A100 | Program | Auto W/B | 1/15sec | F4.5 | 70mm | 35mm equiv 105mm | ISO-400 | No Flash
모니터 위/아래 부분은 둥글게 절곡처리되어 있습니다. 판넬의 위/아래 부분만 볼트로 고정이 되므로 모니터를 손으로 툭툭 치면 모니터 양 측면에서 알루미늄 하우징 앞/뒤 판넬이 부딪치는 소리가 나기도 하네요. 앞 판넬은 LCD 패널 고정하는 역할이 아니라, 단순히 화면 가장자리를 가리기 위해 덧대진 것이라 별다른 힘을 받지 않기 때문에 이런 구조라 해도 별로 문제될 건 없어보입니다.
SONY | DSLR-A100 | Program | Auto W/B | 1/15sec | F4.5 | 70mm | 35mm equiv 105mm | ISO-400 | No Flash
SONY | DSLR-A100 | Program | Auto W/B | 1/8sec | F4.5 | 70mm | 35mm equiv 105mm | ISO-400 | No Flash
사진으로는 잘 안 보이지만 화면 안쪽으로 살짝 굴곡을 줘서 하우징과 LCD 패널 일체감을 주려고 한 듯 합니다. 전체적으로 화면과 앞쪽 판넬이 2~3mm 정도 틈이 있네요. 틈을 없애려고 너무 욕심을 부리게 되면 패널을 누르거나 흠집이 생기는 등 부작용도 있을 수 있어 이 정도면 문제는 없을 듯합니다. 초기 제품에서 심하게 들뜨는 경우가 있었다고 하는데, 2차 배송분부터는 이내 바로잡았다고 하네요.
SONY | DSLR-A100 | Program | Auto W/B | 1/20sec | F3.5 | 28mm | 35mm equiv 42mm | ISO-400 | No Flash
모니터 뒷면은 하우징 고정용 볼트 몇 개가 보이는 것 말고는 밋밋한 알루미늄판 뿐입니다. 방열 구멍이 없어 열 배출이 제대로 되기는 할까 걱정하는 분들이 계실지 모르겠지만 23인치 철제케이스와 비교해봐도 더 뜨겁다는 느낌이 없네요. 정 뜨겁다 싶으면 나중에 드릴로 구멍을 뚫던지 해야겠지만 당장 걱정은 안 해도 될 것 같습니다.
SONY | DSLR-A100 | Program | Auto W/B | 1/10sec | F4.5 | 60mm | 35mm equiv 90mm | ISO-400 | No Flash
SONY | DSLR-A100 | Program | Auto W/B | 1/20sec | F4 | 35mm | 35mm equiv 52mm | ISO-400 | No Flash
스탠드는 두께 5mm 정도의 철판으로 되어 있어 꺾일 걱정은 하지 않아도 되겠고, 힌지도 튼튼히 모니터 멋대로 목이 꺾일 일은 없습니다. 그래도 철판 나름의 탄성이 조금은 있기 때문에 모니터를 툭 치면 잠시 건들건들 흔들리긴 하네요.
SONY | DSLR-A100 | Program | Auto W/B | 1/50sec | F3.5 | 30mm | 35mm equiv 45mm | ISO-400 | No Flash
조절할 수 있는 모니터 각은 위 사진을 참고하시면 되겠네요. 책상 위에 놓고 의자에 앉아 작업하는 경우 모니터 각도 때문에 불편할 일은 없을겁니다. 의자가 지나치게 높거나 허리가 지나치게 길지만 않다면요.
SONY | DSLR-A100 | Program | Auto W/B | 1/10sec | F3.5 | 30mm | 35mm equiv 45mm | ISO-400 | No Flash
모니터 뒷쪽에는 어댑터와 DVI 케이블을 연결 커넥터가 아래를 향하고 있고.. 스탠드에 케이블을 뺄 수 있도록 구멍이 뚫려 있어 나름 깔끔하게 케이블 처리가 됩니다. 스탠드의 구멍이 좀 높은 감이 있기는 하네요.
SONY | DSLR-A100 | Program | Auto W/B | 1/25sec | F4 | 45mm | 35mm equiv 67mm | ISO-400 | No Flash
기본 구성 어댑터는 24V, 5.42A 출력입니다(위의 작은 어댑터는 23인치용, 60W 출력입니다). 약 130W 정도까지 쓸 수 있다는 얘기네요. 모니터가 정확히 얼마나 전기를 많이 먹는지 확인은 못해봤습니다. 다음주에 ZM-MFC2 갖다가 23인치와 한번 비교해서 관련 내용 추가토록 하겠습니다.
알루미늄 절단면이 매끄럽지 않은 점을 빼면 하우징은 깔끔하게 잘 만들어진 편입니다. 모니터 암이나 다용도 스탠드 등을 이용하려면 스탠드를 분리하고 브래킷을 별도로 장착해서 써야 하지만.. 30인치 모니터를 피벗해서 쓸 일은 거의 없을테니 일반 유저들에겐 별로 불편할 일은 아닌 듯 합니다.
화질 분석
지금까지 약 1년 반 정도를 써 왔던 LM230W02 패널 모니터와 간단히 비교를 해 봤습니다.
- 흰색 표현
모니터에 흰색을 띄워놓고 카메라의 커스텀 화이트밸런스 기능을 이용해 색온도와 타색을 확인해봤습니다.
LM300W01-STA4 패널은 6500K에 Red/Green Shift 없는 흰색 그대로 잡히네요.
SONY | DSLR-A100 | Manual | Auto W/B | 1/80sec | F4.5 | 35mm | 35mm equiv 52mm | ISO-100 | No Flash
LM230W02 패널은 6400K, G5 로 잡히는 걸 보니 붉은색 쪽으로 치우친 걸 알 수 있습니다(카메라에서 이를 보정하기 위해 Green 값을 올리는거죠). 위 사진은 LM300W01-STA4 패널에 맞춰 화이트밸런스를 잡은 상태에서 LM230W02 패널을 찍은 겁니다. 두 모니터를 나란히 놓고 비교해보면 확실히 LM300W01-STA4 패널 쪽이 더 시원한 느낌입니다.
모니터마다 상태는 다르겠습니다만, 제가 받은 모니터는 불량화소는 없었고(혹여 있다고 해도 눈으로 분간하기 어려운 수준) 약간의 빛샘이 있었습니다. 모니터 위쪽 중앙, 왼쪽 아래부분에 빛샘이 약하게 보이고, 화면 전체 밝기가 약간씩 차이가 보이네요. 조명을 모두 끈 상태에서 봤을 때에나 약하게 확인할 수 있고, 스탠드 조명 하나만 켜 놔도 전혀 알아채기 힘든 정도입니다. 흔히 말하는 무결점 모니터를 받았네요.
- 응답속도
LM230W02 패널의 응답속도는 16ms(B-W-B) 이고 LM300W01-STA4는 8ms(GTG, 추정) 입니다. 기준이 다르기 때문에 사양만 놓고 어느 것이 우월하다 할 수는 없겠으나 둘 모두 실지 사용할 때 잔상으로 인한 불편함은 신경쓰지 않아도 될 정도로 응답속도는 뛰어난 편입니다.
역시 1/800 초로 찍은 LM300W01-STA4 패널 모습입니다. 어느 것이 더 우월하다고 말하기 힘들 정도로 응답속도는 얼추 비슷합니다. 카메라로 응답속도를 확인하는 건 한계가 있습니다. 제아무리 셔터를 짧게 끊는다 하더라도 셔터가 열리는 순간에 따라서 잔상이 있어 보이기도 하고 없어 보이기도 하거든요. 위 사진만 보고 어느 것이 더 응답속도가 좋네 나쁘네 간단히 판단하는 일은 없었으면 합니다.
위 그림에서 빨간색 부분일 때 사진을 찍으면 잔상이 없는 것처럼 보일거고.. 녹색 부분일 때 찍으면 잔상이 없는 것처럼 보일겁니다. 카메라로 모니터를 찍어 응답속도를 확인할 때에는 1프레임 정도의 잔상은 보일 수 있다는 걸 미리 생각하시기 바랍니다. 2프레임 이상 잔상이 늘어진 게 보이지 않는다면 잔상으로 인한 불편함은 별로 걱정하지 않아도 될겁니다.
- 각도에 따른 컬러 변화
IPS 방식의 패널들은 대각선 방향으로 봤을 때 검은색이 파란색이나 보라색으로 보이는 약점이 있다고 알려져 있었습니다. 색 재현율 92% 패널을 채용한 모니터에서는 이런 현상이 보이지 않는다고 하는데, 색 재현율 72% 인 LM300W01-STA4는 어떨까요?
SONY | DSLR-A100 | Manual | Auto W/B | 1/25sec | F4 | 45mm | 35mm equiv 67mm | ISO-400 | No Flash
먼저 LM230W02 패널에 검은색을 띄우고 대각선 방향으로 올려다본 모습입니다. 검은색이 보라색과 파란색으로 변색된 걸 확인할 수 있습니다.
SONY | DSLR-A100 | Manual | Auto W/B | 1/20sec | F4 | 50mm | 35mm equiv 75mm | ISO-400 | No Flash
이번에는 LM300W01-STA4의 모습입니다. 보라색/파란색으로 타색 없이 살짝 하얗게 빛이 배어나오는 정도로 개선이 되었네요. 결과적으로 채도는 낮아질지 모르겠지만 색상에는 별 영향이 없을 것입니다.
그럼 검은색 단색이 아니라 컬러 이미지를 볼 때 어떻게 차이가 나는지 살펴보죠.
SONY | DSLR-A100 | Program | Manual W/B | 1/50sec | F3.5 | 28mm | 35mm equiv 42mm | ISO-100 | No Flash
밝은 이미지를 띄운 상태에서 각도를 달리해 보면 LM230W02 패널이라고 해도 크게 떨어지는 건 없습니다. 왼쪽이 LM300W01-STA4, 오른쪽이 LM230W02 입니다.
SONY | DSLR-A100 | Program | Manual W/B | 1/30sec | F3.5 | 30mm | 35mm equiv 45mm | ISO-100 | No Flash
하지만 어두운 분위기의 이미지를 보면 LM300W01-STA4 쪽이 색상 변화가 적음을 알 수 있습니다.
- 화질 종합
색 재현율 92% 패널에서 개선된 것으로 알려져 있었던 대각선 방향 흑색 표현이 72% 패널인 LM300W01-STA4 에서도 동일하게 개선되었음을 확인할 수 있었습니다. 대낮에 밝은 곳에서 써도 걱정 없을 정도로 화면이 매우 밝고 응답속도나 색상 표현 모두 흠잡을 데가 없네요.
광색역에 대한 오해 / 부작용
색 재현율이라 함은 많은 분들께서 아시겠지만 1953년 제정된 Original NTSC 색공간에서 3원색 채도를 꼭짓점으로 하는 삼각형 면적을 얼마나 커버할 수 있는가를 나타내는 용어입니다. 위의 색도도를 보시면 92% 광색역 모니터의 색공간이 Original NTSC에 거의 근접한 수준임을 확인할 수 있습니다.
WCG-CCFL을 채용해 색 재현율이 92% 라고 광고하는 LCD 패널은 분명 기존의 제품들에 비해 녹색과 빨간색의 채도가 높아져 보다 풍부한 색을 표시할 수 있습니다. 사진 편집이나 감상, 전자출판 등 컬러에 민감한 작업을 할 때에는 광색역 모니터가 좋은 결과물을 낼 수 있음을 부정하는 사람은 없을겁니다.
그러나 PC에서 표준으로 사용하는 색공간인 sRGB는 72% 색역 모니터와 거의 일치합니다. 다시 말하면, 92% 광색역 모니터는 sRGB에서 녹색과 빨간색이 상당히 확장된 형태라 할 수 있습니다. sRGB 를 기준으로 제작된 이미지를 별도의 보정 없이 92% 광색역 모니터로 출력하게 되면 색이 왜곡된다는 얘기죠.
WUXGA 해상도 이하의 광색역 패널을 사용한 모니터들은 모니터의 이미지 프로세서상에서 색공간 에뮬레이션 기능이 어느 정도 구현되어 있어서 올바른 색상을 표현할 수 있습니다. 하지만 30인치 모니터의 경우 넓은 해상도 때문에 아직 이미지 프로세서가 들어간 제품은 거의 없고, DVI 신호를 그대로 출력하는 제품들이 대부분이라 별도로 보정을 하지 않는다면 색상의 왜곡은 피할 수 없습니다.
또한, 색공간을 sRGB로 제한할 수 있다고 하더라도, 결국에는 모니터가 표시할 수 있는 색상 수의 일부를 제한하는 것이므로, sRGB 색공간만 사용한다고 했을 때에는 72% 색역 모니터에 비해 화질이 떨어질 수도 있겠죠.
위 사진에서 sRGB, 72% 가 "올바른" 색감일 때 sRGB 색공간 이미지를 92% 광색역으로 확장해 표시하면 Green과 Red 톤이 증가하게 됩니다. 이 편이 밝고 화사해서 "눈에 보기 좋은" 색감이 될 수 있을지는 모르겠지만 sRGB 표준에서 왜곡된 것이므로 색상에 민감한 작업을 해야 할 때에는 오히려 문제가 될 수 있습니다.
Adob"e" RGB 입니다만.. 이미지 수정하기 귀찮네요. -_-;
AdobeRGB를 지원하는 디지털카메라에서 AdobeRGB 색공간으로 사진을 촬영하면 sRGB 색공간으로 촬영했을 때보다 더 칙칙한, 채도가 낮은 사진이 나오는 것을 알 수 있습니다. AdobeRGB는 sRGB에 비해 보다 넓은 색역을 사용하기 때문에 이것을 sRGB 색역과 비슷한 72% 색역 모니터로 보면 채도가 낮은 것처럼 보이게 되는 것이죠. 하지만 92% 광색역 모니터로 보게 된다면 sRGB 이미지를 72% 색역 모니터로 봤을 때와 비슷한 색감으로 볼 수 있을 것입니다. 물론 보다 높은 채도의 색 정보를 가지고 있고, 또 보여줄 수 있기 때문에 왜곡되지 않으면서도 보다 풍부한 색감의 이미지를 보고, 편집할 수 있게 될 것입니다.
색공간과 색상 보정에 대해 충분히 이해를 하고, 사진 편집을 자주 하는 사용자라면 광색역 모니터가 더 좋은 선택이 될 수 있습니다. 하지만 현재 PC에서 쓰이는 영상 포맷들은 거의 대부분 sRGB 색공간을 기준으로 하고 있기 때문에 아직은 72% 색역 모니터가 보다 "정확한" 컬러를 표현한다고 할 수 있습니다.
92%에 비해 72% 라는 숫자가 상당히 낮은 것처럼 보여 "72% 색역 모니터라 색감이 떨어진다" 라거나, "92% 광색역 모니터라 정확한 색을 표현한다"는 식의 오해는 없었으면 합니다.
총평
이야기가 끝에서 어째 이상한데로 흘러가기는 했습니다마는..
저렴한 가격에(불과 한두달 전만 해도 생각하기 어려웠던 가격) 30인치 WQXGA+ 해상도의 모니터를 쓸 수 있다는 점. 오픈프레임 형태가 아니라 그럴싸한 알루미늄 하우징을 입힌 모니터 완제품이라는 점이 타사 제품들과 비교했을 때 마이크로보드 제품이 가질 수 있는 장점이고.. 그 것에 이끌려 저도 구입을 했습니다.
기존의 IPS 패널에 비해 개선된 색상 변화라든지, 명암비를 유지하면서 밝기를 끌어올린 점 등.. 30인치 완제품과 비교해봐도 더 나은 화질을 기대할 수 있을 정도네요.
케이스 유격이나 절단면 마감처리와 같은 부분이 아쉽기는 하지만.. 가격을 감안하면 흠도 아닙니다. ㅋㅋ
30인치의 작은 픽셀 크기가 부담스럽지 않다면, 작업용이든.. 영화 감상용이든 30인치 강추합니다.
좋은 글 잘 보았습니다. 제가 현재 92% 색재현율의 모니터를 사용중인데 실제로 6500K 로 맞춰서 사용하면 색감이 붉은색과 초록색이 강조된 느낌이 있었습니다.
그 이유는 위의 글에서 설명하신 바와 같이 sRGB를 기준으로 작성된 이미지나 프로파일정포에 근거한 출력으로 인해서 92% 색재현율의 모니터에서 왜곡이 되어 출력된다는 것인데, 그렇다면 NTSC기준 92%와 AdobeRGB는 거의 일치하는 겁니까? 위에 첨부하신 자료를 볼때 NTSC 92%와 AdobeRGB의 색상분포가 비슷하기 때문에 프로파일을 AdobeRGB로 사용할 경우 거의 왜곡없이 출력할 수 있는가하여 질문드립니다.
제가 켈리브레이션을 사용하여 조절할 수 있는 정도까진 아니고 과연 단순히 프로파일만 바꿔서 92% 색재현율의 모니터를 활용가능할지 궁금해서 말이죠.. ^^;;
여기까지 온 이유는 많은 분들이 이 게시글의 링크를 걸어주셨네요. ㅋ
많은 분들이 USB 플래시 메모리 드라이브 하나 정도는 들고 다니시고, 디지털 카메라의 저장장치, 더 나아가 최근에는 SSD(Solid State Disk)나 센트리노 4세대(산타로사)에 등장하는 터보 메모리 등등 다양한 분야에서 플래시 메모리를 사용하고 있습니다. 이렇듯 최근들어 널리 사용되는 플래시 메모리에 대한 주요 특징에 대해 여러분께 소개해 드리고자 몇 주 전 플래시 메모리를 위한 소프트웨어 개발 기법에 대한 강의 내용 중 관련 내용을 간단히 간추려봤습니다. 아주아주 낮은 수준의 내용이라 플래시 메모리에 대해 많이 알고 계신 분들의 첨언 부탁드립니다. ^^;
플래시 메모리의 특징
1. 비휘발성 메모리
플래시 메모리의 가장 큰 특징이라면 다들 아시다시피 전력 공급이 없더라도 데이터를 보존할 수 있다는 점이겠지요. 이 덕분에 디스크처럼 저장 공간으로 사용이 가능하면서도 XIP(eXecution In Place)나 저장위치에 상관 없이 접근시간이 동일한 메모리의 특성을 가지게 됩니다.
플래시 메모리라는 명칭은 1984년 도시바에서 "플래시 EEPROM"이라는 논문을 발표한 것에서 유래되었는데, 기존 EEPROM 셀의 구성과 동작을 변형한 것이라고 하네요.
기계적인 작업이 없어 디스크에 비해 다음과 같은 장점을 가집니다.
1. 빠른 접근 시간 / 2. 저전력 / 3. 내충격/온도 / 4. 소형, 경량 / 5. 무소음
저장 위치에 관계 없이 접근시간은 일정하므로 접근시간 향상을 위한 "디스크 조각모음"과 같은 작업은 플래시 메모리에 적합하지 않습니다.
2. 플래시 메모리의 구조
플래시 메모리는 일정한 크기를 가진 여러 개의 블록들로 구성되어 있습니다. 이 블록들은 다시 페이지와 스페어 공간으로 나뉩니다. 블록과 페이지의 크기는 소블록(1세대)/대블록(2세대)으로 나뉘는데, 최근에는 거의 대블록으로 나온다고 하는군요.
페이지는 읽고 쓰기의 기본 단위, 블록은 삭제의 기본 단위입니다. 이에 대해서는 뒤에서 다시 이야기할게요.
3. 덮어쓰기 제한
플래시 메모리의 특정 페이지에 데이터를 쓰려고 한다고 가정합시다. 데이터를 쓰고자 하는 페이지가 비어 있는 경우 곧바로 데이터를 쓰는 게 가능합니다.
하지만 그 페이지에 다른 데이터가 이미 기록되어 있는 경우 곧바로 쓰는게 불가능합니다. 다른 비어있는 페이지를 골라 데이터를 쓰거나, 블록을 지운 뒤 써야 합니다.
첫 번째 그림처럼 단순히 블록을 지우고 데이터를 새로 쓰는 방법은 참 간단해 보입니다. 하지만 앞서 "읽고 쓰기의 단위는 페이지", "지우기의 단위는 블록"이라고 말씀을 드린 바대로, 갱신하고자 하는 페이지만 지우고 새로 쓰는게 아니기 때문에 해당 블록에 다른 유효한 데이터가 있는 경우 이 데이터를 다른 블록에 옮기는 작업이 먼저 이뤄지지 않으면 유효한 데이터가 파괴되어 버리는 문제가 있겠죠.
두 번째 방법은 블록 삭제 과정 없이 다른 빈 페이지에 갱신된 데이터를 쓰는 것입니다. 이 경우는 갱신되기 이전의 무효 데이터를 어떻게 수집하고 처리할 지에 대한 고민이 필요합니다.
4. 작업의 종류에 따라 달라지는 비용(시간)
플래시 메모리는 읽기, 쓰기, 지우기에 필요한 시간이 각각 다릅니다. 많은 분들께서 아시다시피 읽기보다는 쓰기가 느리지만, 일반적으로 사용할 때에는 지우기 작업까지 포함되는 경우가 많아 작업 완료에 필요한 시간은 읽기에 비해 훨~씬 느려지게 됩니다.
최신 자료는 아니지만, 다른 메모리와 비교 자료가 있어 소개해 드립니다.
위 표를 보시면 휘발성 메모리 3종은 읽기/쓰기에 모두 똑같은 시간을 소비하는 반면 NOR, NAND 플래시 메모리는 읽기/쓰기/지우기에 각각 다른 시간을 소비하는 것을 알 수 있습니다. ns는 10억분의 1초(1.e-9), μs는 100만분의 1초(1.e-6), ms는 1000분의 1초(1.e-3)이니, NAND 메모리는 쓰기가 읽기보다 약 20배 느리고, 지우기는 약 198배 느리다는 이야기가 됩니다. NOR메모리는 쓰기가 읽기보다 1053배, 지우기는 6000배 느리군요(푸하하). 계산이 틀리진 않았길 바랍니다(-_-).
하지만 USB 플래시 메모리 드라이브나 C/F 등에 파일을 복사할 때 저렇게 많은 차이는 나지 않을겁니다. 옛날 자료라서 요즘에는 그 차이가 더 줄었을거고, 지우기 횟수를 줄이면서 데이터를 쓰는 여러 알고리즘도 많이 개선됐을테니까요.
5. 지우기 횟수의 제한
플래시 메모리는 쓸 수 있는(정확히는 지우기) 횟수가 제한되어 있어, 그 횟수를 초과하는 경우 정상적인 작동을 보장할 수 없게 됩니다. 이 사실은 많은 분들께서 아실거구요. 보통 한 블록당 10만번 정도의 지우기가 가능하다고 하네요.
그렇다면 특정 파일이 자주 변경되는 경우 해당 블록만 자주 사용해서 플래시 메모리에 배드블록이 생기느냐? 일반적인 경우라면 그런 걱정은 하지 않아도 됩니다. 파일을 갱신하는 경우 사용자 관점에서 위치는 변함이 없지만, 플래시 메모리상의 블록/페이지 위치는 파일이 갱신될 때마다 계속 바뀌기 때문에 블록들을 골고루 쓰는거나 다름이 없으니까요.
플래시 메모리의 종류
플래시 메모리는 크게 NOR, NAND, DINOR, AND 의 네 가지 형식으로 나뉩니다. 각각의 특징은 다음 표를 참고.
네 가지 형식 중 역시 유명한 것은 인텔이 미는 NOR과 삼성이 미는 NAND 방식이죠. DINOR은 NOR과 비슷한 특성을 가지고 AND는 NAND와 비슷하다고 보시면 되겠습니다.
1. NOR
NOR 플래시의 가장 큰 특징은 바이트 단위로 접근이 가능하다는 것입니다(위 표의 어드레싱 크기 부분 참고). 컴퓨터에서 프로그램을 실행할 때 과거의 개념으로는 주 메모리에 프로그램을 적재한 후 수행하는 방식을 사용하지만, 바이트 단위로 접근이 가능하기 때문에 주 메모리에 적재하는 과정 없이도 플래시 메모리상에서 바로 프로그램을 실행할 수 있게 됩니다(XIP, eXecution In Place).
크게 인텔과 AMD 제품군으로 구분이 되는데, 인텔 제품군은 부트블록 플래시와 스트라타 플래시로 구분이 가능합니다. 부트블록 플래시는 한 워드씩 쓸 수 있지만 스트라타 플래시는 16개 워드를 병렬로 쓸 수 있다는군요(AMD 제품군은 부트블록 플래시와 유사함).
주로 부트 및 프로그램 수행에 이 NOR 플래시를 사용합니다.
2. NAND
NAND 플래시는 바이트 단위가 아닌 일정한 크기의 데이터블록(플래시 메모리 구조상의 블록과는 다릅니다) 단위로 입출력이 가능합니다. NOR 플래시가 "메모리"에 가깝다면 NAND 플래시는 "디스크"에 가깝다고 할 수 있습니다. NOR 플래시에 비해 데이터 쓰기/지우기가 다소 빠르고(읽기는 NOR이 다소 유리) 무엇보다 집적도가 높아 대용량 플래시 메모리에 적합합니다.
NAND 플래시만으로는 부팅이 불가능해서, SRAM과 컨트롤러를 추가한 OneNAND라는 제품이 등장했습니다. 부팅과 읽기/쓰기 버퍼로 SRAM을 이용하겠다는거죠. 여기에서 더 나아가 SRAM+컨트롤러+ROM을 추가해 moviNAND라는 제품까지 나와있는 상태입니다.
OneNAND를 이용하면 부팅을 위해 NOR 플래시를 사용할 필요가 없어지므로, 인텔에서는 자사의 모바일 프로세서에 NOR 플래시를 집적해버리는 방법으로 자존심을 지키고 있다고 합니다.
SLC NAND / MLC NAND의 구분은 한 셀당 비트 수에 따라 결정되는데, SLC(Single-Level Cell) NAND는 한 셀이 1-bit / MLC(Multi-Level Cell) NAND는 한 셀이 2-bit 이상을 저장할 수 있음을 의미합니다. 현재로서는 MLC NAND의 한 셀은 2-bit입니다. 같은 수의 셀이라면 SLC에 비해 MLC가 용량이 두 배 크다는 얘기가 되겠죠.
하지만 MLC NAND는 SLC NAND에 비해 속도가 느리고, 에러율이 높아 강화된 에러 검출/복구 알고리즘이 필요합니다. 무엇보다, 블록당 지울 수 있는 횟수가 SLC는 10만회인 데 반면 MLC는 1만회로 1/10 수준밖에 되지 않아 용량을 제외한 속도, 수명 및 신뢰도 면에서는 SLC가 현재는 유리하다고 할 수 있습니다.
오랜만에 글을 쓰려니 영 잘 안 풀리네요. 플래시 메모리 이해에 조금이나마 도움이 되었으면 하는 바람입니다. 부족한 글 끝까지 읽어주시느라 수고하셨고, 본문 서두에 적어둔 것처럼 부족한 부분에 대한 보충설명이나 잘못된 부분에 대한 지적, 의견 등등 부탁드리겠습니다. (_ _)
다시 오셔서 보실지 모르겠지만.. 메일주소라도 있으면 그쪽으로 답을 드렸을텐데 하는 아쉬움이 있네요. ^^
생각하시는 대로 쓰이는 위치는 항상 바뀌게 됩니다. 물론.. 메모리에 빈 공간이 없는 상태에서 계속 업데이트를 하게 되면 저장되는 위치를 바꾸고 싶어도 충분한 공간이 확보되지 못해 수명에 안 좋은 영향을 미칠 수는 있을 것 같네요. 이런 부분은 플래시메모리 컨트롤러를 어떻게 프로그램하느냐에 따라 다를 것이고, 관련 전공자가 아니다보니 그렇게 깊게까지는 알고 있지 못합니다. ^^;;
Comments
구글님한테서 뭐좀 검색하다가 뭔 이미지가 첨에 뜨길레 반가운 지벡스여서 한번 클릭했다가 아는분 블로그여서 들렀다 갑니다 ㅜㅜ;
위에 애니멀오빠다~~ 꺄오~
형이야~~ 니가준거 잘쓰고있어~ 먼진 알지.. ㅋㅋ