0

そこで、最近、基本的な画像処理を行うように設計された GUI を作成しました。それは使用しています

[filename, pathname] = ...
     uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

set(handles.Textbox1, 'string', fullfile(pathname,filename));

ファイル名を取得し、他の関数が使用できるように GUI のテキストボックスに配置します。入力された画像にノイズを追加するように設計されたノイズ機能がありますが、GUI で残りのフィルターに新しく作成されたノイズ写真を使用する方法がわかりません。

少し説明させてください。GUI には 6 つのボタンがあり、それぞれが平均フィルタリング/ラプラキアン フィルタリングなどの画像上の機能を実行するように設計されており、ノイズを追加するボタンが 1 つあります。ボタンをクリックすると、画像に目的の効果を加えた図がポップアップ表示されます。私がやりたいのは、「ノイズを追加」ボタンをクリックした後、GUI で新しい画像を使用してさらに画像処理を行うことです。たとえば、[ノイズを追加] をクリックし、今すぐ [平均フィルタリング] をクリックすると、GUI は 2 つの画像を吐き出します。私の目標は、GUI が代わりにノイズで満たされた画像に対して平均フィルタリングを実行することです。

私が書いた「Addnoise」関数に以下を追加しようとしましたが、何も起こりません。

saveas(myimage, 'photonoise.raw');

画像を保存した後、新しい画像の文字列を元のプログラムに戻して処理できるようにする必要がありますが、保存して文字列を開く方法がわかりません。addnoise ボタンをクリックした後、ファイルブラウザを再度開いて新しい画像を選択することなく、古い文字列が単に置き換えられるので、使用したくありません

[filename, pathname] = ...
     uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

set(handles.Textbox1, 'string', fullfile(pathname,filename));

また。どうぞよろしくお願いいたします。

4

1 に答える 1

2

Handles 構造体を有利に使用し、画像データをハンドルに保存します。

handles.currentImage=imread(get(handles.textbox1,'string')); %This reads in an image

handles.currentImage=yourOperation(handles.currentImage) % Modify your image and save back

figure(1) %This keeps everything popping up in 1 figure, 
%if you dont want that, remove the "(1)"

imshow(handles.currentImage) %show current image
于 2013-06-19T13:45:38.370 に答える