数字图像处理GUI的设计第四天
1 翻转
1.1 上下翻转
1.1.1 ndims函数
判断是否是彩色图,也就是等于3时,是彩色图,原本参考的大佬代码是比较老的版本,用的isrgb函数,但是我的2018a版本删除了,有报错,所以改成了ndiums函数。
ndims(handles.img) == 3
1.1.2 flipud函数
实现矩阵的上下翻转
flipud(X);
1.1.3 翻转后的图像
代码:
axes(handles.axes2);
x=(handles.img);
if(ndims(handles.img) == 3)
for k=1:3
y(:,:,k)=flipud(x(:,:,k));
end
imshow(y);
else
x=(handles.img);
y=flipud(x);
imshow(y);
end
图像:
1.2 左右翻转
1.2.1 fliplr函数
矩阵的左右翻转
fliplr(X)
1.2.2 翻转后的图像
代码:
function leftright_Callback(hObject, eventdata, handles)
axes(handles.axes2);
x=(handles.img);
if(ndims(handles.img) == 3)
for k=1:3
y(:,:,k)=fliplr(x(:,:,k));
end
imshow(y);
else
x=(handles.img);
y=fliplr(x);
imshow(y);
end
图像:
1.3 旋转角度
1.3.1 imrotate函数
旋转图像函数
B=imrotate(A,angle)
B=imrotate(A,angle,method)
B=imrotate(A,angle,method,bbox)
gpuarrayB=imrotate(gpuarrayA,)
常用的就是B=imrotate(A,angle)
,旋转angle角度
B=imrotate(A,angle,method)
旋转任意角度,使用method算法,例如‘nearest’(最临近插值)也是默认值,'bilinear’双线性,'bicubic’双三次。
1.3.2 代码
%左转90°
axes(handles.axes2);
x=(handles.img);
y=imrotate(x,90);
imshow(y);
%右转90°
axes(handles.axes2);
x=(handles.img);
y=imrotate(x,-90);
imshow(y);
axes(handles.axes2);
prompt={'请输入旋转角度:'};
defans={'30'};
p=inputdlg(prompt,'输入角度',1,defans);
p1=str2num(p{1});
y=imrotate(handles.img,p1);
imshow(y);
3 噪声
3.1 imnoise函数
添加噪声污染图像
g = imnoise(I,type)
g = imnoise(I,type,parameters)
g = imnoise(I,‘gaussian’,m,v)
g = imnoise(I,‘localvar’,V)
g = imnoise(I,‘localvar’,image_intensity,var)
g = imnoise(I,‘poisson’)
g = imnoise(I,‘salt & pepper’,d)
g = imnoise(I,‘speckle’,v)
3.2 高斯噪声
代码:
axes(handles.axes2);
prompt={'输入参数1:','输入参数2'};
defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
y=imnoise(handles.img,'gaussian',p1,p2);
imshow(y);
handles.noise_img=y;
guidata(hObject,handles);
3.3 椒盐噪声
prompt={'输入参数1:'};
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
axes(handles.axes2);
x=(handles.img);
y=imnoise(x,'salt & pepper',p1);
imshow(y);
handles.noise_img=y;
guidata(hObject,handles);
3.4 乘性噪声
axes(handles.axes2);
prompt={'输入参数1:'};
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
y=imnoise(handles.img,'speckle',p1);
imshow(y);
handles.noise_img=y;
guidata(hObject,handles);