2016-07-11 3 views
-1

OpenCV에서 다시 매핑 기능을 사용하려고합니다. 나는 STMap을 가지고 있기 때문에 x 값은 Red 채널에 있고 y 값은 Green 채널에 있습니다.채널을 분할 할 때 OpenCV - 오류가 발생했습니다.

다음

내가 매핑 할 내 원본 이미지를로드하고있어, 그리고 STMAP는 :

Mat bgr[3]; //destination array 
split(image3,bgr);//split source 

bgr[0].convertTo(bgr[0],CV_32FC1); 
bgr[1].convertTo(bgr[1],CV_32FC1); 
bgr[2].convertTo(bgr[2],CV_32FC1); 
Mat dst; 
:

다음
Mat image3= imread("stmap.tif", CV_32FC1); 
Mat image4= imread("source.tif", CV_LOAD_IMAGE_UNCHANGED); 

내가 내 STMAP에서 빨간색과 녹색 것들을 얻을 수있는 채널을 분할

그리고 마지막으로, 매핑 부 그러나

remap(image4, dst,bgr[2],bgr[1],INTER_LINEAR,BORDER_CONSTANT,Scalar(0,0,0)); 

, 내가 dst 표시 매트, 모두 검은 색이야. 내가 좋아하는 콘솔에 일부 값을 인쇄하려고 :

cout << bgr[2].at<float>(1000,300); 

하지만 그들은 모두 0입니다. 나는 bgr[1]bgr[2]을 표시했으며 모두 검은 색이 아닙니다. 그레이 스케일 그래디언트입니다.

그래서 문제가 될 수 있습니까?

감사합니다.

편집 :

나는 내가이의 .jpeg 파일과 명령을 사용 할 때마다 것으로 나타났습니다 :

cout << bgr2[2].at<float>(1000,300); 

그것은 0.1828510

처럼 나에게 뭔가를 줄 것입니다하지만 난이 프로그램을 실행할 때 동일한 명령을 32 비트 .tif와 함께 사용하면 다음과 같이 표시됩니다.

1.04984e-320 

편집 2 :

convertMaps() 기능은 어떻게 사용해야합니까?

내가 시도하고 작동하지 않았다 무엇 : 또한

Mat image3= imread("STMap.jpg"); 
Mat image4= imread("image.jpg"); 

    Mat bgr[3]; 
    split(image3,bgr); 
    Mat map_x, map_y; 
    map_x.create(image.size(), CV_32FC1); 
    map_y.create(image.size(), CV_32FC1);  
    convertMaps(bgr[2], bgr[1], map_x, map_y, CV_32FC1); 

, 내가 convertTo()을 사용했을 때

bgr[2].convertTo(red_channel, CV_32FC1, 1/255.0) 

bgr[2]가 올바르게 표시

(매핑 강도의 그레이 스케일 이미지)와 그것을 red_channel은 0.0에서 1.0 사이의 값을 모두 가지고 있습니다.

답변

0

convertTo()으로 전화하면 전혀 이해가되지 않습니다. 또한 remap() 설명서를보고 convertMap()에 대한 참조를 찾을 수 있습니다. 이는 매트릭스 유형을 변경하는 데 필요한 방법입니다 (실제로해야한다면!).

remap()은 입력이 특정 범위에 있고 예상 입력 행렬의 유형에 따라 다를 것으로 예상합니다. 그것이 JPEG와 함께 작동하지만 32 비트 TIFF가 아닌 경우 데이터 범위 문제가있을 것으로 예상됩니다.

+0

'convertTo()'를 호출하지 않아도 동일한 결과를 얻을 수 있습니다. 32 비트 .tif STMap 및 해당 32 비트 .tif를 사용하려면 어떻게'remap() '을 사용합니까? – YaronGh

+0

'convertTo()'가 없으면 작동하지 않는 것은 당연합니다. – ypnos

+0

내 데이터 유형이 일종의 것이고 0.0-1.0 범위로 "클램프"하려고 시도하는 이유는 무엇일까? CV_32FC1 유형이므로 'remap()'에 의해 허용됩니다. 기능? – YaronGh

관련 문제