스프레드 시트로 이미지 파일


2

이미지 파일 (예 : tiff)을 가져 와서 각 픽셀이 해당 픽셀의 숫자 값이있는 셀이되도록 스프레드 시트 (csv 등)로 변환하고 싶습니다.

나는 그것을 구글 검색했고, 모두가 나에게 OCR 소프트웨어를 판매하려고 노력하고있다. 그것은 내가 원하는 것이 아니다.

미리 이미지를 편집 할 것이므로 필요한 형식으로 변환하고 관리 가능한 크기로자를 수 있습니다.

주로 관심있는 그레이 스케일이며 3 개의 별도 파일 (컬러 채널 당 하나씩)로 필요한 약간의 색상을 수행 할 수 있습니다.

나중에 스프레드 시트에서 통계 분석을 할 것입니다. 나는 이것이 나중에 많은 프로그래밍 프로젝트에 대한 개념 증명이라는 점을 감안할 때 자바에서 함께 뭔가를 두들겨 넣을 수 있지만, 실제로 간단한 작업이 무엇인지에 대해 너무 많은 번거로운 느낌이 든다.


Java를 할 수 있다고 말하면 왜 안됩니까? 다른 프로그래밍 언어는 아마도 더 적은 코드 줄에서 그렇게 할 수 있지만 오버 헤드는별로 없습니다. 나는 당신이 이것에 대한 기성품 솔루션을 얻을 것이라고 생각하지 않습니다. 다양한 프로그래밍 언어에 대한 ImageMagick의 인터페이스 를 살펴볼 수 있습니다 .
slhck

답변으로 요청하지 않는 한 파이썬과 PIL 라이브러리를 사용하여 주석으로 쓰겠습니다. 3 줄의 코드로 픽셀 값을 얻을 수 있습니다. 1) 라이브러리 가져 오기 2) 파일 열기 3) getpixel. 그 밖의 모든 것은 부기입니다.
데니스

파이썬 코드가 어떻게 코딩되는지는 알지 못하지만 개인적으로 그 코드를 놓칠 것이지만 다른 코드에는 잘 작동 할 것이라고 확신합니다. 현재 Java 편집기를 찾는 중이므로 사용 방법을 기억할 수 있는지 확인할 수 있습니다.
Thingomy

답변:


1

너무 복잡하지 않습니다. 다음은 자바 접근 방식입니다. CSV로 작성하면됩니다. 파일에 간단히 작성하면됩니다.

for (int x = 0; x < image.getWidth(); ++x)
  for (int y = 0; y < image.getHeight(); ++y) {
    int pixel = image.getRGB(x, y);
    int r = (pixel >> 16) & 0xff;
    int g = (pixel >> 8) & 0xff;
    int b = (pixel) & 0xff;
  }
}

여기서 imageA는 BufferedImage. 당신은로드 할 수 있습니다 BufferedImageImageIO.read(File input);. 에서 찾을 수 javax.imageio.ImageIO있습니다.


이것은 확실히 트릭을 할 것입니다, 비록 자바를해온 지 오래되었습니다 ...
Thingomy

0

무료 오픈 소스 SAGA GIS를 사용하고 모듈 / 파일 / 그리드 / 가져 오기 / 이미지로 이미지를로드하려고합니다-실제로 X 및 Y 값을 포함하는 텍스트 파일 인 XYZ 파일로 내보낼 수있는 SAGA 그리드를 얻습니다. 각 픽셀의 Z 그리드 치 이것은 당신이 깔끔해야합니다. SAGA는 무료입니다. :-) http://www.saga-gis.org/en/index.html


0

나는 비슷한 문제가 있었다. 그래프를 포함하는 많은 이미지 파일을 얻습니다. 그것은 실제로 나의 애완 동물입니다. 사람들은 나에게 실제 데이터 포인트를 보내지 않습니다. 이것은 내가 어떤 종류의 계산이나 분석을 해야하는지, 대신 나에게 예쁜 그림을 보냅니다. 데이터 세트가 작고 그래프가 컴퓨터 출력의 출력 인 경우 (대부분의 현대 인쇄와 마찬가지로) 손으로 그리는 것이 아니라 MS 페인트를 사용하는 것이 다소 정확할 수 있습니다. 당신이하는 일은 파일을 열고 x 축을 확대하는 것입니다. 마우스 커서를 개별 픽셀로 이동할 수있을 때까지 확대하십시오. 오른쪽 하단에 x 및 y 픽셀 좌표 인 한 쌍의 숫자가 있습니다. 가로선이나 그와 같은 부분을 가로 지르는 지점과 같이 반복 가능한 지점에서 x 축의 각 숫자 표시 눈금의 x와 y를 찾습니다. 인쇄 결과 또는 컴퓨터 프로그램에서 저장된 이미지의 결과는 모두 동일한 y 좌표를 가져야합니다. 그러나 오래된 저널 기사에서 볼 수 있듯이 손으로 그린 ​​그래프 인 경우 전체 이미지가 회전하거나 완벽하게 그려지지 않도록 전체 좌표를 수정해야하므로 y 좌표를 가져야합니다. 눈금 표시의 너비가 여러 픽셀 인 경우 중간에서 오른쪽에있는 픽셀을 찾을 수없는 경우, 예를 들어 눈금 표시의 너비가 4 픽셀이고 픽셀 번호 51에서 시작하여 픽셀 54에서 끝나는 경우와 같이 중심을 추정 할 수 있습니다. 중심은 52.5입니다. (그래프가 손으로 그린 ​​소스에 공통적 인 정확도로 그려지지 않으면 과도 할 수 있습니다) 중간에서 오른쪽으로 픽셀을 찾을 수없는 경우, 예를 들어 눈금이 4 픽셀 너비이고 픽셀 번호 51에서 시작하여 54 픽셀에서 끝나는 경우 중심을 추정 할 수 있습니다. (그래프가 손으로 그린 ​​소스에 공통적 인 정확도로 그려지지 않으면 과잉 일 수 있습니다) 중간에서 오른쪽으로 픽셀을 찾을 수없는 경우, 예를 들어 눈금이 4 픽셀 너비이고 픽셀 번호 51에서 시작하여 54 픽셀에서 끝나는 경우 중심을 추정 할 수 있습니다. (그래프가 손으로 그린 ​​소스에 공통적 인 정확도로 그려지지 않으면 과잉 일 수 있습니다)

다음으로 x 및 y 픽셀 좌표를 확대하고 준비하여 같은 방식으로 그래프에서 값을 읽습니다. 그래프에 따라 데이터 포인트를 작은 기호로 보거나 선일 수 있습니다. 프로세스를 단순화하고 프로세스가 선 또는 그와 유사한 점을 넘어서는 지점을 취할 수도 있습니다. 돌로 작성된 것은 없습니다.

이제 데이터가 확보되었으므로 모든 데이터를 Excel에 넣으십시오. 귀하의 행동과 그래프 작성 방법에 따라 도움이 될 수있는 다양한 트릭이 있습니다. 예를 들어, 그들이 엄청나게 두꺼운 선을 사용했다면 때때로 관심 지점 주위에 이웃을 맞추는 데 도움이 될 수 있습니다. 그런 다음 해당 맞춤 선에 수직 인 선을 선택하고 그 점에 해당하는 값의 평균을 구하십시오. 다른 경우에는 특정 y 점에 해당하는 모든 x 점의 단순 평균이 더 잘 작동합니다. 때로는 모든 가장자리 점을 가져 와서 곡선에 맞추고 수행 할 수 있습니다.

이것은 작업을 훨씬 쉽게 할 수 있지만 어제 발견했지만 아직 사용하지 않았습니다. 이미지의 모든 점을 가져 와서 쉼표로 구분 된 픽셀 값 목록으로 변환해야합니다. 그런 다음 예를 들어 색상별로 픽셀을 선택할 수 있습니다. 원래 데이터가 무엇이든간에 얻을 수 있도록 Excel에서 처리 할 수 ​​있어야하는 형식. 예를 들어 데이터를 이미지로 내 보낸 엑셀 그래프로 만든 경우에는 매우 정확해야합니다.

https://itg.beckman.illinois.edu/technology_development/software_development/get_rgb/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.