PDA

查看完整版本 : [求助]新手求助,关于用GUI设计一个小型PS。。


沉默冷淡寂寞
2009-02-24, 10:41
首先说明下要实现的功能:
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。

读取文件部分
[filename,pathname]=uigetfile({'*.bmp';'*.jpg';'*.tif';'*.*'},'载入图像');
if isequal(filename,0)|isequal(pathname,0)
errordlg('没有选中文件','Error');
return;
else
img=imread([pathname,filename]);
set(handles.axes1,'HandleVisibility','ON');
axes(handles.axes1);
imshow(img);
guidata(hObject,handles)
set(handles.axes1,'HandleVisibility','OFF');
end
保存文件部分不懂得写,能否指教下:lovely:

我只知道要用哪个函数,然后在后面写个imshow,结果都不能实现功能。
比如双线性插值我只在回调函数中写了
z2=imresize(handles.image,1,'bilinear');
imshow(z2);
想请教下为什么不能实现?:cry:

还有就是关于噪声方面
str=get(hObject,'string');
set(handles.axes1,'HandleVisibility','ON');
axes(handles.axes1);
switch str
case '椒盐噪声'
prompt={'输入参数:'}
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
f=imnoise(handles.image,'salt & pepper',p1);
imshow(f);
handles.noise_image=f;
guidata(hObject,handles);
case '高斯噪声'
prompt={'输入参数1:','输入参数2:'};
defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
f=imnoise(handles.image,'gaussian',p1,p2);
imshow(f);
handles.noise_image=f;
guidata(hObject,handles0);
case '乘性噪声'
prompt={'输入参数:'};
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
f=imnoise(handles.image,'speckle',p1);
imshow(f);
handles.noise_image=f;
guidata(hObject,handles);
end
set(handles.axes1,'HandleVisibility','OFF');
结果也是无法实现功能。:ft:

望有坛友能指点一下。