JMP에 참석했다면 디스커버리 서밋 2011 콜로라도 주 덴버 (Denver, Colorado)에서는 9 월에 제 프리젠 테이션에 앉아 있을지도 모릅니다. 이미지가 모든 것이 아니라 JMP 9에 있는지 확인하십시오. . 내가 추가 된 이미지 기능에 대해 이야기했습니다. JMP 버전 9에서는 JMP 사용자가 이미지 기능을 활용하여 이미지에 포함 된 데이터를 추출하는 방법에 대한 실제 사례를 보여주었습니다. 이미지 기능을 사용하기 위해 JMP (JMP Scripting Language) 스크립트를 공유했습니다. 같은 이유로, 이미지 기능을 보여주는 코드 스 니펫의 JSL 파일을 함께 사용하기로 결정했습니다. 이 파일은 ImageExamples.jsl , JMP에서 찾을 수 있습니다. 파일 교환 . 이 파일에서 몇 가지 예를 들어 보자.
가장 먼저해야 할 일은 기존 이미지를 JMP로 가져 오는 것입니다. 이렇게하려면 새 이미지 명령을 사용하기 만하면됩니다.
img = newImage ( "C : \ Users \ sasjvp \ Pictures \ Yellowstone08 \ IMG_0262.JPG" ) ;
새창 ( "원본 이미지" , img ) ;

이 예제에서는 JPEG 이미지를 읽어 들여 img라는 이미지 객체로 JSL에 저장합니다. NewImage ()는 JPG, PNG, BMP, GIF 및 TIF 파일을 읽을 수 있습니다.
처음이 작업을 수행했을 때 이미지가 너무 컸기 때문에 결과 창이 매우 컸습니다. 이미지의 크기가 실제로 무엇인지 궁금해했습니다. 그래서 이렇게했습니다.
{ w , h } = img << getSize () ;
이 명령은 나에게 이미지의 너비와 높이를주었습니다. 이미지의 너비와 높이는 3264 x 2448으로 다소 큰 이미지였습니다. 그래서 좀 더 합리적인 크기로 표시하려면 이미지의 새로운 너비와 높이를 지정하여 크기를 줄였습니다.
img << setSize ( { w / 4 , h / 4 } ) ;
이제 이미지는 816 x 612 또는 각 치수의 원래 크기의 1/4입니다. 너비와 높이는 중괄호로 묶어서 목록으로 전달됩니다.
이제 이미지를 조작하고 싶지만 원래 버전을 유지하려고합니다. 따라서 NewImage ()를 사용하여 이미지 사본을 만듭니다.
img2 = newImage ( img ) ;
이렇게하면 원본 이미지를 img2라는 두 번째 이미지로 만듭니다.
다음으로하고 싶은 것은 이미지의 픽셀 값을 얻는 것입니다. 내 이미지는 컬러 이미지이므로 각 픽셀은 빨강, 녹색 및 파랑의 세 가지 색상 요소로 정의됩니다. 픽셀 데이터는 요청하는 각 색상 구성 요소의 행렬로 반환됩니다.
{ 아르 자형 , 지 , 비 } = img2 << getPixels ( "rgb" ) ;
이 경우, 나는 3 개의 행렬을 얻을 것이다. 내 이미지에 투명성이있는 경우 "rgba"를 지정하여 네 개의 행렬을 요청할 수 있습니다. 또한 녹색 구성 요소에 대해 "g"와 같이 원하는 구성 요소를 지정하여 단 하나의 색상 구성 요소를 요청할 수도 있습니다. 각 행렬은 정규화 된 색상 공간의 픽셀 색상 값을 나타내며 값이 0.0 이상 1.0 이하임을 의미합니다.
픽셀 값을 행렬로 가져 오는 것에 대한 좋은 점은 이제 픽셀에서 행렬 연산을 할 수 있다는 것입니다. 이미지의 회색조 버전을 만들고 싶다면 다음 공식을 사용하여이 작업을 간단하게 수행 할 수 있습니다.
나는 = .30 * 아르 자형 + .59 * 지 + .11 * 비 ;
이것은 TV가 컬러 쇼를 흑백으로 변환하는 데 사용할 수있는 공식과 동일합니다. 네가 나만큼 오래 되었다면, 흑백이 아닌 흑백 텔레비전 사이의 회색 범위를 포함하는 흑백 텔레비전을 기억할 것입니다. 이 공식은 초록색 구성 요소의 30 %와 초록색 구성 요소의 59 % 및 청색 구성 요소의 11 %를 결합합니다. 이것은 내 그레이 스케일의 강도 값을 계산합니다. 이제는 그레이 스케일 이미지를 생성하기 위해 그레이 스케일 강도 값으로 빨강, 녹색 및 파랑의 원본 색상 요소를 대체 할 수 있습니다.
img2 << setPixels ( "rgb" , { 나는 , 나는 , 나는 } ) ;
결과는 다음과 같습니다.

JMP는 JSL에서 행렬 수학을 지원하므로 이미지를 탐색하고 각 픽셀을 개별적으로 조작 할 필요가 없습니다. 이 수식을 한 번에 전체 이미지에 적용 할 수 있으므로 편리하고 효율적입니다.

물론 JMP의 진정한 강점은 통계 분석 및 데이터 검색 기능입니다. 이렇게하려면 데이터 테이블 형식이어야합니다. 따라서 이미지를 읽고 픽셀 데이터를 추출하여 데이터 테이블을 만듭니다.
MRI에서 찍은 이미지를 봅시다. 이전처럼 NewImage () 명령을 사용하여 이미지를 JMP로 읽을 수 있습니다. 이 이미지가 이미 그레이 스케일 이미지라는 점을 제외하고는 getPixels () 명령을 이전과 같이 사용할 수 있으므로 하나의 색상 구성 요소 만 요구하면됩니다. 첫 번째 구성 요소는 여전히 "r"구성 요소라고합니다. 픽셀 값을 얻으면 데이터 테이블을 만들 수 있습니다.
img = NewImage ( "C : \ JMP \ mri.jpg" ) ;
{ pix } = img << getPixels ( "아르 자형" ) ;
dt = 새 테이블 ( "픽셀 데이터" ,
newColumn ( "값" , 값을 설정하다 ( pix )))) ;
분포 ( 연속 배포 ( 기둥 ( : 값 ) , 외계인 상자
음모 ( 0 ) ) ) ;
새창 ( "이미지 데이터 분석" , img ) ;
픽셀 값은 이제 JMP로 읽은 다른 데이터와 마찬가지로 데이터 테이블에 있습니다. 즉, JMP에서 통계 분석 기능을 사용하여 데이터를 분석 할 수 있습니다. 이 시점에서 사용하는 것은 귀하의 데이터가 무엇이고 어떤 질문을 대답 하느냐에 달려 있습니다. 이 예에서는 데이터의 범위와 빈도를 보여주기 위해 간단한 Distribution을 사용했습니다.

이 시점에서 JMP에서 이미지를 사용하기 시작하기에 충분한 예제를 제공해주기를 바랍니다. 예제 스크립트를 다운로드하는 것을 잊지 마십시오. ImageExamples.jsl , JMP에서 파일 교환 . 여기서 언급 한 것보다 더 많은 예제를 보여줍니다. 여기에는 회전, 투명도 및 필터 명령이 포함됩니다. 당신이 무슨 생각을하는지 제게 알려주세요.
JSL을 이용한 JMP에서의 이미지 조작 쓴 :
[...] getPixels ( "rgb") 명령은 각 이미지를 빨강, 녹색 및 파랑의 각 색상 요소에 대해 하나씩 3 개의 행렬의 모음으로 반환합니다. 이미지를 혼합하려면 Image2에 백분율을 곱한 다음 Image1에 1을 뺀 값을 백분율로 더합니다. 그런 다음 결과 이미지 인 Image3으로 설정합니다. 그게 전부입니다. getPixels () 및 다른 이미지 기능에 대한 자세한 설명은 내 블로그 게시물 인 JMP 9로 이미지 개선을 참조하십시오. [...]