2016-08-26 2 views
1

이미지 위에 데이터를 플롯하려는 그림을 Matlab R2014a에 저장하려고합니다.MATLAB : faceAlpha로 geoshow 그림을 저장하는 방법은 무엇입니까?

[Singapore, R] = geotiffread(file); 
s = size(Singapore); 
matrix = rand(s(1),s(2)); 
geoshow(Singapore(:,:,1:3), R) 
hold on 
geoshow(matrix, R, 'DisplayType', 'texturemap','facealpha',.2); 
xlim([103.605,104.04]) 
ylim([1.2,1.475]) 

이 하나가 완벽하게 작동 줄거리입니다 : :이 코드 enter image description here

동안 나는 이미지가 완전히 흰색 인 그림을

print(gcf, '-dpng',  fullfile(FileF, 'test.png')) 

를 인쇄하고 때이 enter image description here

+1

FaceAlpha = 1은 어떻게됩니까? – NKN

+0

나는 동일한 출력을 가지고 있습니다 – emax

+2

원본 이미지에 대한 링크가있어 문제를 재현 할 수 있다면 *** lot ***이 (가) 더 쉽습니다. –

답변

1

많은 덕분에 이미지 링크! 필자가 제공 한`Singapore.tif '파일과 적절한 출력 파일에 맞게 수정 한 코드를 사용하고 시스템 (Matlab 2013b, Linux 64 비트)에서 예상대로 작동합니다. 이 출력 파일입니다

enter image description here

그래서 난 당신의 코드에 아무 문제가 없다는 것을 말할 미안 해요, 그것은 아마도 'PNG'창에 드라이버 또는 특정 설치와 함께 할 수있는 뭔가입니다. 다른 드라이버로 인쇄 해 보셨습니까? (예 : jpg 또는 pdf?). 그림의 그래픽 메뉴 (예 : File->Save As)에서이 작업을 수행하면 실제로 작동합니까? 또는 적절한 속성을 가진 File->Export Setup->Export을 통해?
내가 생각할 수있는 유일한 다른 점은 시스템에 혼란을 줄 수있는 유일한 이유는 uint8 rgb 이미지 (싱가포르 이미지) 을 오버레이 된 이중 회색조 이미지로 인쇄하려는 시도입니다.

geoshow(Singapore(:,:,1:3), R) 

geoshow(mat2gray(Singapore(:,:,1:3)), R) 


에 수동으로 데이터를 플롯을 시도 가치 및 인쇄가 작동하는 경우 표시 될 수 있습니다 변경하여 이중 해결할 수있는 문제이에 싱가포르 이미지를 변환 여부를 알 수 있습니다 예 :

[Singapore, R] = geotiffread('Singapore.tif'); 
SingaporeXYImage = cat(3, flipud(Singapore(:,:,1)), ... 
          flipud(Singapore(:,:,2)), ... 
          flipud(Singapore(:,:,3))); 
s = size(Singapore); 
matrix3D = repmat(rand(s(1),s(2)), [1,1,3]); 
imagesc(R.LongitudeLimits, R.LatitudeLimits, mat2gray(SingaporeXYImage)); 
hold on; 
imagesc(R.LongitudeLimits, R.LatitudeLimits, matrix3D, 'alphadata', .2); 
hold off; 
axis xy equal tight; 
xlim([103.605,104.04]) 
ylim([1.2,1.475]) 
print(gcf, '-dpng', 'test.png'); 


,536,913,632 보너스로 (10)는, 여기 당신이 경우 당신은 관심에서, 옥타브에서 같은 일을 수행하는 방법이다 (I, 특히 글꼴의 측면에서 훨씬 좋네요 볼 옥타브에서 플롯을 인쇄합니다!) :

pkg load mapping; 
pkg load image; 
[SingaporeStruct, R] = rasterread('Singapore.tif'); 
SingaporeImage = cat(3, SingaporeStruct(1:3).data); % note this is a matrix of 
                % "doubles" in range [0,255] 
SingaporeImage = mat2gray(SingaporeImage); % Convert to appropriate [0,1] range 
              % for "doubles" rgb images! 
s = size (SingaporeImage); 
matrix3D = repmat (rand (s(1), s(2)), [1, 1, 3]); 
imagesc (R.bbox(:,1), R.bbox(:,2), ... 
     SingaporeImage .* 0.8 + matrix3D .* 0.2); % manually create 
                % transparency effect 
axis xy equal tight 
xlim([103.605,104.04]) 
ylim([1.2,1.475]) 
print (gcf, '-dpng', 'test.png'); 

enter image description here


또한 내 동료와 그/그녀가 답변에 넣은 노력에 대해 무례하지 않지만, 귀하가받은 다른 대답은 본질적으로 완전히 잘못되어 귀하의 주장 및 경고에 관계없이 귀하의 marked accepted을 철회해야합니다. 표시된 대답을 철회하는 것이 얼마나 무례한 지. mapshowMapCellsReference 형식을 사용하는 이미지에 특히 사용됩니다. boston.tif 이미지는 그러한 이미지 중 하나입니다. 그러나 이미지는 GeographicCellsReference 형식을 사용합니다.이전에는 mapshow이 사용되고, 후자에는 geoshow이 사용됩니다. geoshowboston.tif에 대해 실패했을 것이며, 동일한 방식으로 mapshowSingapore.tif에 대해 실패합니다. 라인 geoshow(Singapore(:,:,1:3), R)이 오류를 발생시키지 않고 작업 했으므로 이미지가 "지역"변형 인 것이 분명해야합니다. 따라서 mapshow을 사용하기위한 제안은 귀하의 질문에 정답이 아니므로 오해의 소지가 있습니다. 말할 것도없이 실제로는 print 명령이 그림 핸들에서 예상 결과를 생성하지 않는 이유에 대한 실제 질문과는 무관합니다. 이론적으로는 그림이 처음에 어떻게 생성되었는지와 관련이 없습니다. 나는 당신의 "받아 들여지는"표를 그것에서 철회하는 아무 가책도 없을 것입니다. 이 사이트가 많은 다른 시청자를위한 참고 자료로 작동하기 때문에 적어도; 당신이 그것을 받아들이기로 위협 받았다는 이유로 사용자를 오답으로 안내하는 것은 의미가 없습니다.

+1

"수동"접근법이 작동하지 않는다면 문제는 설치/png 라이브러리에서 거의 확실합니다. 'jpg'또는 'pdf'드라이버는 어떻습니까? –

+1

당신 말이 맞아요. 나는 .pdf와 .tiff로 저장할 수 있으며 완벽하게 작동합니다. 큰! – emax

0

mathworks에서 제안한대로 mapshow을 사용하면 문제를 해결할 수 있습니다. 중동에 대한 다음 작품 :

[boston, R] = geotiffread('boston.tif'); 
figure 
mapshow(boston, R); 
axis image off 
S = size(boston); 
matrix=rand(S(1),S(2)); 
hold on 
mapshow(matrix, R,'DisplayType','texturemap','facealpha',0.2); 
print(gcf, '-dpng','test.png') ; 

enter image description here

+0

이미지를 mapshow로 가져 오는 중 오류가 발생했습니다. 그러나 여기에 이미지의 링크. https://www.dropbox.com/s/55o13cmyzf206uo/Singapore.tif?dl=0 – emax

+0

내 답변은 분명히 MATLAB에서 제공하는 표준 이미지에서 작업하고 있습니다. 이제는 이전에 포함되지 않은 새로운 질문을하고 있습니다. 다른 질문을해야합니다. 내게는 이미지에 다른 래스터 구조가있는 것처럼 보입니다. 그리고 받아 들여진 대답을 되 찾는 것은 매우 나쁜 습관임을 기억하십시오. 행운을 빌어 다른 곳에서 그것을 해결하십시오. – NKN

+0

당신 말이 맞아요. 내 질문을 해결하지 못하더라도 대답을 받아 들였지만 다른 질문은 해결했습니다. – emax

관련 문제