2011-11-16 9 views
0

ガイドで作成したUIで使用したい2倍の2D画像があります。私はそれを描画したい軸のハンドルを持っています。私はこれを成功させずに試みました、私のイメージはすべて青です。double型の2D画像をAxisハンドルに描画する方法matlabUIで

function ComputeMap_Callback(hObject, eventdata, handles) 
% hObject handle to ComputeMap (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global healthyImage; 
global sickImage; 
global tumorMapImage; 
global costFunction; 
if(get(handles.radiobuttonMSE,'Value') == get(hObject,'Max')) 
    costFunction = 0; 

else 

    costFunction = 1; 
end 
disp(costFunction); 
tumorMapImage = mexFunction(im2double(sickImage),im2double(healthyImage),get(handles.blockSize,'Value'),get(handles.windowSize,'value'), costFunction); 

image(tumorMapImage,'parent',handles.sImageGUI); 

このmexFunctionは、2次元の2次元画像を返します。私はちょうどmatlabとimShow(resultImage)なしでこの関数を呼び出します。私は正しい結果を得る。だから私はそれがダブルのカラーマップと、イメージが3Dではなく2Dであるという事実と関係があると信じています。しかし、私は何をすべきかを確かめるために、matlabのguiに精通しています。私はもう少し研究を重ねてきましたが、私の問題はAlphaDataプロパティに関連している可能性があると思いますが、どうしたらいいのか分かりません。

+0

使用している追加のコードやエラーがあれば教えてください。あなたはその機能を呼び出すと何も起こりませんか?その行がうまくいくはずです。 – aganders3

+0

ものを追加しました。私は何のエラーもありません。 – DogDog

答えて

1

image機能で適切にプロットするには、画像値が範囲[0、1]である必要があります。

imshowは、画像内で最初にの最小値と最大値のを探してから、この範囲に一致するように値を調整するためです。とか、ぐらい。 (多分内部的には動作しますが、それは何でも構いません)

+0

不幸にもこれは問題ではありません。これまでにこの問題が発生しましたが、最大値が1.0を超えているというエラーが返されます。 – DogDog

+0

ああ、あなたはまだ最低値が実際に0とあなたの最高値はacutally 1、右ですか?つまり、1e-38の値を持つ場合、それは(ほぼかなり)ゼロ=>青で表示されます。 – Efrain

+2

私は彼の質問をもう一度読んだので、私はこれが問題だと確信しています。 @Apoc、 'image()'の代わりに 'imagesc()'を使ってみてください。 – aganders3

関連する問題