C언어에서 이미지 파일 분석하는 방법은?

corone의 이미지

C언어에서 이미지 파일을 분석하려면
관련 API 함수라든지 라이브러리가 있나요?

.jpg 파일이나 .bmp 파일을 읽어와서 비트값을 분석하고 색깔 범위를 이용해서 비교하거나 검색할 수 있었으면 좋겠습니다

daybreak의 이미지

컴퓨터 비젼 교재로 쓰이는 곤잘레스 책에 기초 이미지 프로세싱 방법에 대해 나와있습니다.

corone의 이미지

컴퓨터 비젼?? 곤잘레스??

Digital Image Processing Using MATLAB
이 책을 말씀하시는 건가요?

컴퓨터 비젼과 곤잘레스가 뭐죠..?;;
자세한 설명 좀 부탁..;;

daybreak의 이미지

뒤에 Matlab 이 빠진 책입니다.

http://www.amazon.com/Digital-Image-Processing-Rafael-Gonzalez/dp/013168728X/ref=sr_11_1/105-5378884-7429257?ie=UTF8&qid=1193631279&sr=11-1

2nd Edition은 비교적 살만한 가격이었죠.
3rd Edition은 좀 비싼 값이 붙어있지만,
아마도 국내에 교재로 수입된 책은 좀 더 저렴할 것 같구요.

검색해보니
교보문고에서 2nd Edition의 원서를 41,000원,
몇판인지 모르겠는 번역서를 34,000원에 팔고 있는데요.
서평을 보니 번역서는 안보느니 못한 모양입니다.

국내는 물론 해외의 여러 대학교에서도 교재로 많이들 쓰는 책이구요.
원서지만 참 쉬운 영어로 되어있습니다.

daybreak의 이미지

위 책의 마지막 장이 Object Recognition 에 대한 내용인데,

맛보기 정도로 되어 있구요.

좀 더 복잡한 내용은 본격적인 컴퓨터 비젼, 이미지 처리, 인공지능, 확률통계 책을 참고하셔야 할 것 같네요.

corone의 이미지

친절한 답변 대단히 감사합니다

dingkyu의 이미지

우선 서점에 가셔서 이미지 프로세싱에 관한 책들을 읽어보심이 좋을듯 하네요.

아직 저도 미천한 실력이지만,
말씀하신것들은 C로 전부 구현하기엔 어려운 부분이 많이 있습니다.
특히 Jpg 파일을 불러오는 것만으로도 그 자체를 구현하기 위해선
그 양이 꽤 많아질껍니다. 보통 초보자를 위한 책에서는 JPG를 불러오는
부분은 공개라이브러리를 이용하는 경우가 많고
이렇게 이렇게 하면 JPG을 불러올 수 있다 라고 하면서 기본적인 이미지 처리에
관한 이론과 소스를 진행해 나가는 것이 대부분입니다.

그렇지 않으면 아예 BMP파일이나 RAW 파일만 다루는 경우가 많죠.

우선 각 이미지 파일에 대한 개념을 숙지하시고 이 이미지 파일들을 어떻게
메모리에 올려놓을 것인지 마련하시는것 부터 공부하시고
그 다음에 이미지 처리에 관한 이론들을 공부하시는게 좋을듯 싶습니다.

개인적으로는 홍릉과학출판사의 "영상처리 이론과 실제" 라는 책을 추천해 드리고
싶습니다. C로 각 영상처리 이론이 아주 잘 해설되어 있다고 생각합니다.
(물론 이 소스를 그대로 타이핑해서는 아무 결과도 볼 수 없습니다.
이미지 파일을 읽어와서 메모리에 올려놓고 메모리에 접근하면서 각 데이타의 처리를
이 책의 소스를 참고로 해서 조금씩 다듬어야 합니다. 따라서 이 책의 소스를
그대로 보기보다는, 영상처리에 적용되는 복잡한 수학식을 C로 어떻게 표현했는가를
참고하는 책으로 생각하시면 될듯합니다.)

고민이 많아 고민인 애늙은이 입니다.

klenui의 이미지

원하시는 것이 어떤 것인지 잘 모르겠습니다만, 아는 대로 적어 봅니다.

단순히 라이브러리를 찾으시는 거라면 DevIL이나 Imagik 이런 것들이 있는 걸로 알고 있습니다.
update는 잘 안되는 것 같지만 기능이 풍부하니 도움이 될 거라 생각합니다.
세부적인 포맷들에 대해 조사하지 않아도 이미지 라이브러리는 이미지를 로딩해서 메모리에서 pixel단위로
접근 가능하게 해주거나 아주 간단한 filter적용 정도를 지원해 줍니다.

만약 원하시는 바가 이미지상의 어떤 object를 detect하는 일반적인 시스템이라면,
어느 정도의 목표인지 잘 감이 오지 않습니다만 오히려 인공지능쪽이 아닐까 생각합니다.
아주 일반적인 시스템이 아니라면 간단히 Pixel 검사만으로 되겠습니다만, 윤곽선 검출을 통해서
object를 찾아내는 목표라면 쉽지는 않을 것이라고 생각합니다.

corone의 이미지

친절한 답변 대단히 감사합니다

dingkyu의 이미지

영역을 인식하는 쪽을 해야 할겁니다.
흔히 카메라에서 사람의 얼굴을 인식하고 초점을 잡는 것을 할때 쓴다고 알고있는데
이건 흔히 말하는 이미지 프로세싱이랑은 약간 개념이 다릅니다.

이미지 프로세싱은 이미지를 대상으로 가공하는 것을 말합니다.
주로 이미지의 크기 축소,확대, 컨트라스트 강조, 샤픈등의 이미지의 품질 자체를
다루는 영역이고,
하시고자 하는건 그게 아니라 물체를 이미지로부터 구분해 내는 것이 관건이니
이는 제가 알기론 패턴인식쪽으로 알고있습니다.
흔히 이용되는 예가 문서를 스캔하면 자동으로 텍스트로 바꿔주는 프로그램이나
고속도로등에서 자동차 번호판을 찍으면 자동으로 번호를 판별해 내는 프로그램이
대표적일껍니다.
즉, 로봇이 어떤 작업을 해야하는 물체의 패턴을 인식시키고 카메라등을 이용해
패턴과 흡사하면(혹은 일치하면) 정해진 수순에 따른 행동을 하는 식으로
만들면 되지 않을까 합니다.

제가 알기론 히스토그램을 이용해서 패턴을 구분해 내는 방법이 있지만
주제가 그 부분밖에 겹치지 않으므로 패턴인식을 다룬 쪽으로 알아보심이 좋을듯
합니다. 그 이상은 저도 잘 모르겠네요. ^^;

고민이 많아 고민인 애늙은이 입니다.

corone의 이미지

친절한 답변 대단히 감사합니다

근데 패턴 인식이요?
그건 어디서 찾아서 무엇을 공부해야 되죠?

아무튼 도움 말씀 너무 감사해요

daybreak의 이미지

그러한 것의 가장 간단한 것이 저 곤잘레스 책에 잘 나와 있습니다.

이 책의 앞부분은 그림에서 특징을 뽑아내기 위해
보정하고 처리하는 여러가지 방법들에 대해 다루고,
중간에서 영상압축과 칼라 이미지에 대한 처리법이 나오고,
끝부분에서 그래서 그림에서 뽑은 특징을 가지고 어떻게 표현하고
이걸로 어떻게 Object Recognition을 하는지에 대해 가장 쉬운 내용이 들어있습니다.

일단 한 번 끝까지 보시고 따라하시면
무엇을 하셔야 할지 감이 잡히실 겁니다.

정태영의 이미지

openCV 를 보세요. 말씀하신 것들이 대부분 구현되어 있습니다.

http://www.intel.com/technology/computing/opencv/overview.htm

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

corone의 이미지

친절한 답변 대단히 감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.