[질문]이미지 데이터를 처리 할때....
글쓴이: ko1205 / 작성시간: 화, 2007/08/14 - 12:55오후
C 프로그래밍을 공부하는 초보인데요......
사이즈가 큰 비압축 포멧의 이미지 데이터를 읽을때....
픽셀단위로 데이터가 저장되있으니까... 이걸 읽을때 한픽셀씩 건너뛰어서 50%사이즈의 이미지로 읽으면
데이터는 25%로 줄어들어서 읽는 속도가 좀빨라질수 있을까 하는 생각을 했는데...
또 한편으로 생각해보면 순차적으로 데이터를 읽어들이는 것이 더빠를 수도 있을꺼 같기도 하고...
실제 하드에서 데이터를 읽어들일때 제가생각한 식으로 하나의 파일에서 일정한 간격으로 데이터를 읽어서
전체 사이즈의 데이터가 아니더라도 속도를 빠르게 사용하는 경우가 있나요~??
있다면 일반적으로는 어떤식으로 저런방법을 사용하는지 알고 싶습니다..
제가 원래 영상쪽일을 하는데 가능하다면 작업에 도움이 되는 작은 프로그램들은 직접 만들어 써보고 싶어서...... 프로그래밍을 공부하고 있습니다... 도와주싶쇼.... ^^
Forums:
어차피 하드
어차피 하드 디스크에서 한 block씩 읽어들일 것이기 때문에 가능하다고 하더라도
read속도는 차이가 없을 것 같습니다.
그런데 만약
read x bytes
lseek x bytes SEEK_CUR
read x bytes
lseek x bytes SEEK_CUR
의 방식대로 하실 생각이시면 system call의 횟수 때문이라도 훨~씬 비효율적이
될 것 같습니다.
--
I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?
I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?
이미지를 이런식으로
이미지를 이런식으로 처리하면, 생각보다 화질이 엄청나게 안좋아집니다.
이미지 리사이징을 하는 여러 알고리즘이 있으므로 한번 알아보시기바랍니다.
시작점으로 imagemagick을 추천합니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
리사이즈를 목적으로 사용할려던건 아니였습니다.
리사이즈를 목적으로 사용할려던건 아니였습니다.
용량이 큰 낮장의 영상파일을 하드디스크 속도가 느린곳에서도 플레이가 가능할까 해서 생각해봤던겁니다.
그리고 아마도 50% 25% 같은 비율로 이미지가 측정 알고리즘 없이 리사이즈 될때는 아주 가는 선들이 있는 이미지 빼고는 화질이 엄청나게 떨어지진 않는걸로 알고 있습니다..
75%라 뭐 80% 같은 정확히 픽셀수의 정수비율로 나눌수 없는 배율의 축소시에는 말씀하신대로 엄청나게 화질이 떨어지겠지만...
제가 원래 프로그래머가 아니라 영상쪽일을 하는지라.. 실제 프로그램을 구현하는건 잘모르지만 남들이 만들어놓은 프로그램은 오래 써봤거든여... ^^;;;
정수가 아니더라도
정수가 아니더라도 Dithering으로 화질 저하는
막을 수 있습니다.
역시 그냥 읽어들이는 방법보다 느린거군요.....
어차피 파일이 하드에 물리적으로 100% 순서대로 들어있지 않의니까 정보를 알아네서 사용하면 되지 않을까 생각했는댕...
역시 않되는가보군여......
얼마나 큰 raw
얼마나 큰 raw image인지는 모르겠으나
raw image조차 소화 못할 시스템이라면 곤란하겠군요.
일반 PC급에서는 소화못할 사이즈 입니다.. ^^:;
영화작업용 2K(2048x1556)에서 4K(4096x3112)사이즈의 10bit이미지 파일이 초당 24장씩 플레이가 돼야하니까 정상적으로 읽으려면 하드가 초당 300M 급의 속도가 나와야합니다.
이런 이미지를 혹시나 속도가 느린 하드에서도 플레이가 가능하게 만들수 없을까 해서 생각해봤던건댕..
여러분들 말씀들어보니 역시 않되는건가 보내영...
보통 raw이미지를
보통 raw이미지를 읽는데 필요한 연산속도는 그리 중요하지 않습니다.
그것보다 저장해야할 버퍼의 크기때문에 그렇게 하는 경우가 많구요.
연산속도 때문에 다운 샘플링된 영상을 원하는 경우는 압축된 경우에 해당합니다.
압축된 경우 다운샘플링된 영상을 구하는 것이 훨씬 빠르거든요.
물론 압축 방식에 따라 다르겠지만...
어짜피 On the fly
어짜피 On the fly 방식으로 읽자마자 화면에 뿌리는게 목적이 아니라면, 버퍼캐쉬를 넉넉히 잡고, 버퍼링을 활용하는 방법이 답이 될것 같습니다.
어째 됐든, 현재의 컴퓨터는 대체적으로 CPU비용보다 Disk I/O의 비용이 비쌉니다. 약간의 버퍼링으로 원하시는 결과를 얻으시기 어렵지 않을거 같습니다.
時日也放聲大哭
댓글 달기