1

我设计了一个 MATLAB GUI,其中有两个轴用于显示图像。我正在使用“不对比度”功能来调整第一轴上图像的亮度/对比度。现在,我想将这个增强的输出(亮度/对比度调整后的输出)存储在某个变量中。由于'imcontrast'函数不返回输出图像,所以我怎样才能得到输出图像?或者有没有办法从特定轴读取图像数据?我曾尝试使用“getimage”函数,但它返回包含在 Handle Graphics 对象(即先前显示的输入图像)中的第一个图像数据,而不是最新的亮度/对比度调整图像。请帮助我保存由“不对比度”功能给出的亮度/对比度调整图像。

4

1 回答 1

1

用这个 -

imcontrast(gca) %// Perform imcontrast
waitfor(gcf); %// Wait for figure data to be updated with imcontrast
image_data = getimage(gcf);%// Store image data as image_data variable

如何在 GUI 中使用

只是为了展示如何使用它,您可以使用 MATLAB-Guide 创建一个按钮,并在它的回调函数中使用它 -

%// Show the image on an existing image axes of the GUI.
imshow('pout.tif') %// This image is available in MATLAB image library.

imc_figure = imcontrast(gca) %// Perform imcontrast
waitfor(imc_figure); %// Wait for the data to be updated in the current figure
image_data = getimage(gcf);%// image data stored into image_data variable

%// Open image_data on a separate figure window for verification.
%// Make sure this is the updated image.
figure,imshow(image_data)

如何作为独立代码使用

Im = imread('cameraman.tif');%// This image is available in MATLAB image library.
h1 = imshow(Im)
h2 = imcontrast(gca); %// Perform imcontrast 
waitfor(h2); %// Wait for figure data to be updated with imcontrast 
image_data = getimage(gcf);%// Store modified image data

%// Show modified image data for verification
figure,imshow(image_data)
于 2014-05-17T16:15:17.363 回答