📄 filter_addnoise.m
字号:
function varargout = filter_addnoise(varargin)
if nargin == 0
p1 = struct( ...
'Name', 'Noise type', ...
'Style', 'popup', ...
'DefaultValue', 1, ...
'Items', { {'Gaussian', 'Salt&Pepper', ...
'Speckle'} } );
p2 = struct( ...
'Name', 'Noise strength', ...
'Style', 'single', ...
'DefaultValue', 0.1, ...
'Max', 1, ...
'Min', 0, ...
'LargeStep', 1 / 10, ...
'SmallStep', 1 / 100);
p3 = struct( ...
'Name', 'Monochome noise', ...
'Style', 'check', ...
'DefaultValue', 1);
P = struct( ...
'FilterName', 'Add noise', ...
'AvailableImageType', [0 0 0 1 1], ...
'Class', 'noise', ...
'ParameterNumber', 2, ...
'Parameters', { {p1, p2} });
varargout{1} = P;
else
CX = varargin{1};
FUNPARA = varargin{2};
if isrgb(CX)
switch FUNPARA{1}
case 1
varargout{1} = cat(3, ...
imnoise(CX(:, :, 1), 'gaussian', FUNPARA{2}), ...
imnoise(CX(:, :, 2), 'gaussian', FUNPARA{2}), ...
imnoise(CX(:, :, 3), 'gaussian', FUNPARA{2}) );
case 2
varargout{1} = cat(3, ...
imnoise(CX(:, :, 1), 'salt & pepper', FUNPARA{2}), ...
imnoise(CX(:, :, 2), 'salt & pepper', FUNPARA{2}), ...
imnoise(CX(:, :, 3), 'salt & pepper', FUNPARA{2}) );
case 3
varargout{1} = cat(3, ...
imnoise(CX(:, :, 1), 'speckle', FUNPARA{2}), ...
imnoise(CX(:, :, 2), 'speckle', FUNPARA{2}), ...
imnoise(CX(:, :, 3), 'speckle', FUNPARA{2}) );
end
else
switch FUNPARA{1}
case 1
varargout{1} = imnoise(CX, 'gaussian', FUNPARA{2});
case 2
varargout{1} = imnoise(CX, 'salt & pepper', FUNPARA{2});
case 3
varargout{1} = imnoise(CX, 'speckle', FUNPARA{2});
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -