사진에서 데이터로
소개
그래프 이미지만 있지만 그래프 뒤에 있는 데이터가 필요한 경우 어떻게 합니까? 한 번에 한 지점씩 손으로 하기로 결정하면 힘든 과정이 될 수 있습니다. 그러나 JMP를 사용하여 이미지에서 데이터 테이블로 데이터를 가져올 수 있으며 몇 단계만 거치면 됩니다.

1단계: 이미지 가져오기
첫 번째 단계는 전체 이미지를 정보로 JMP 테이블에 가져오는 것입니다. 스크립팅을 통해 수행할 수 있지만, 뛰어난 Image to Table Add-In을 사용하여 수행할 수도 있습니다. 레이캬비크의 인구 이미지를 예로 들겠지만, 선 그래프의 이미지라면 무엇이든 작동할 것입니다.
애드인을 다운로드하고 설치한 후 Add-Ins > Image Analyzer를 선택하면 이미지를 선택하여 데이터 테이블로 가져올 수 있습니다. 데이터 테이블에는 이미지의 각 픽셀에 대한 RGB 데이터(및 기타 정보)가 포함됩니다.

2단계: 저울 고정
테이블이 열리면 Graph Builder를 사용하여 이미지의 흑백 버전을 재생성하는 것은 충분히 간단합니다. 아래 이미지에서 I 열(Intensity)을 색상 열로 사용했고 Y 스케일을 반전하여 이미지가 저장되는 방식과 일치하도록 했습니다.

이제 당장 문제가 보입니다. 그래프의 스케일이 JMP의 스케일과 일치하지 않습니다. 이 문제는 정말 쉽게 해결할 수 있습니다. JMP의 일부 기본 제공 기능과 중간 데이터 테이블을 사용하면 됩니다.
- 4개의 열(X, Y, 원하는 X, 원하는 Y)이 있는 빈 데이터 테이블을 만듭니다.

- 예를 들어 X축이 1896년이고 인구가 0인 그래프의 왼쪽 하단에서 알려진 위치의 데이터 포인트를 선택합니다. 이러한 값을 새 데이터 테이블의 원하는 X 및 원하는 Y 열의 행 1에 입력합니다.

- 그래프 빌더 창에서 크로스헤어 도구를 선택한 다음 이 데이터 포인트 위로 마우스를 가져갑니다. 주어진 X 및 Y 값을 기록합니다. X 및 Y 열의 행 1에 해당 값을 적습니다.

- 그래프의 오른쪽 상단 모서리에 있는 알려진 지점에 대해 이 과정을 반복하여 X와 Y에 대한 현재 값과 원하는 값을 모두 기록합니다. 귀하의 표는 아래 예와 같아야 합니다.

다음 단계는 그래프에 표시된 것과 일치하도록 이미지 데이터 테이블의 스케일 X 및 Y 값을 변경하는 것입니다. 기본적으로 각 열에 오프셋과 스케일링 인수를 적용해야 합니다. 다행히도 이는 단순히 선을 맞추는 것인데, 이는 Fit Y by X 플랫폼의 기본 기능입니다. 아래 그림에서 현재 값과 X 및 Y에 대한 원하는 값 사이의 관계에 선을 맞추었습니다.

여기서 핵심은 선형 적합 공식을 보는 것입니다. ay = mx + b 방정식의 형태로 오프셋과 스케일을 모두 제공합니다. 여기서 m은 스케일이고 b는 오프셋입니다. 이러한 매개변수는 JMP의 새 공식 열 도구와 함께 사용하여 축을 수정하는 작업을 빠르게 수행할 수 있습니다.
- 이미지 데이터 테이블에서 X 열을 마우스 오른쪽 버튼으로 클릭하고 새 수식 열 > 변형 > 오프셋 크기 조정...을 선택합니다.
- 여기서는 승수로 작성된 배율 인수와 Y x X 맞춤 창에 있는 수식에서 복사한 오프셋 값을 입력합니다.

- Y 열에 대해 이 과정을 반복합니다. 승수에 대해 음수를 입력해야 합니다.
이제 X와 Y에 대한 새로운 열이 이미지와 일치하는 축과 스케일을 가지며 데이터 테이블에 있습니다. Graph Builder에서 축을 이러한 새로운 열로 변경하면 이러한 새로운 축이 이미지의 축과 어떻게 정렬되는지 알 수 있습니다.

3단계: 데이터 추출
남은 유일한 단계는 관심 라인에 있는 데이터 포인트가 아닌 이미지 데이터 테이블의 모든 행을 제거하는 것입니다. 이를 위해 K 평균 클러스터링 은 빠르고 거의 자동화된 도구입니다. (이 트릭을 보여준 @landonbw1 에게 특별히 감사드립니다.)
원본 이미지에는 흰색, 파란색, 회색, 검은색의 네 가지 색상이 있는 것처럼 보입니다. 그러면 JMP에 R, G, B 열을 네 개의 클러스터로 분리하고 파란색 선이 그 클러스터 중 하나가 되도록 요청하는 것은 간단한 일일 것입니다. 이미지 압축, 색상 혼합 및 기타 요소가 이미지 파일에서 작동하는 방식으로 인해 실제로 이 이미지에는 500개가 넘는 개별 색상이 있습니다. 그래도 주요 색상은 충분히 쉽게 분리할 수 있습니다. 일반적으로 클러스터 수를 가시 색상(일반인이 이미지에 있다고 말할 색상) 수의 두 배로 설정하면 이미지 파일에서 개별 그래픽 요소의 클러스터가 생성됩니다.
- 분석 > 클러스터링 > K 평균 클러스터를 선택합니다.
- R , G , B 열을 Y, 열 선택에 입력한 다음 확인을 선택합니다.
- 클러스터 수 섹션에 8을 입력한 다음 이동을 선택합니다.
- 그래프 빌더를 보면서 클러스터 요약 표에서 각 클러스터를 차례로 선택하여 선이 속한 클러스터를 확인합니다. 아래 그림에서 클러스터 5를 강조 표시하면 그래프에서 선의 데이터 포인트만 강조 표시됩니다.

- 관심 클러스터(이 경우 5개)를 제외한 모든 클러스터를 선택하고 테이블에서 이 행을 삭제합니다. 이제 남은 행은 이미지의 그래프에서 나온 데이터 포인트뿐입니다. 몇 가지 Graph Builder 옵션을 변경하면 JMP에서 데이터의 대화형 그래프가 생성되는데, 이전에는 정적 이미지만 있었습니다.

결론
이미지에서 데이터를 추출하여 데이터 테이블에 넣는 방법을 읽는 데 걸리는 시간이 실제로 프로세스를 수행하는 데 걸리는 시간보다 더 길다는 사실에는 아이러니가 있습니다. 그러나 아이러니를 제쳐두고 이 프로세스를 사용할 수 있는 기회도 많이 있습니다. 여기에는 다음이 포함됩니다.
- 연구 프로젝트를 시작할 때, 이용 가능한 모든 문헌을 연구할 때.
- 프로세스나 제품의 역설계.
- 피로 모델 플랫폼 에서 사용하기 위해 응력-변형 곡선을 디지털화합니다.
이를 통해 귀하의 업무에 어떤 기회가 열리나요?
매우 훌륭해요. 클러스터링 덕분에 정말 많은 시간이 절약됩니다!!
좋은 일이네요, @제드 캠벨 .
많은 경우 데이터 선택(곡선 추출)은 Graph Builder에서 관심 지점/영역을 대화형으로 선택한 다음 행 선택을 반전(표에서)한 다음 행>숨기기 및 제외를 통해 작동합니다. 빈 공간은 비슷한 방식으로 제거할 수 있습니다. 예를 들어, 하나의 흰색 지점을 선택(Graph Builder에서) > 일치하는 셀을 선택(표에서 셀을 마우스 오른쪽 버튼으로 클릭) > 행>숨기기 및 제외.
나에게는 이미 잘 먹혔어요:)
이 추가 기능은 JMP에서 플롯 이미지의 데이터를 직접 복구하고자 하는 사람들에게 큰 진전입니다. 사용할 수 있게 해주셔서 감사합니다!
비슷한 작업을 시도해 보시는 분들께는 웹플롯디지타이저 ( https://automeris.io/웹플롯디지타이저/ )라는 무료 도구를 확인해 보시는 것을 추천합니다. 꽤 오랫동안 사용되어 온 도구인데, 모든 종류의 플롯에서 데이터를 추출하는 데 놀라울 정도로 빠르고 사용하기 편리합니다. 버전 4.x는 오픈 소스이며 오프라인에서도 사용할 수 있어 매우 편리합니다.
이런 종류의 작업에 더 많은 도구가 사용 가능해지는 것을 보니 기쁩니다. 앞으로도 두 가지 측면 모두에서 지속적인 개발이 이루어져 데이터 추출이 더욱 원활하게 이루어지기를 바랍니다!
최근에 아주 좋은 기능들이 추가되었네요! @Jed_Campbell 님 감사합니다!