http://blog.youkuaiyun.com/xc1499715227/article/details/41940701
一、fspecial函數用於建立預定義的濾波算子,其語法格式為:
h = fspecial(type)
h = fspecial(type , para)
其中 type 指定算子的類型, para 指定相應的參數;
type 的類型有:
1 、 'average'
averaging filter
為均值濾波,參數為 hsize 代表模板尺寸,默認值為【 3 , 3 】。
H = FSPECIAL('average',HSIZE) returns an averaging filter H of size
HSIZE. HSIZE can be a vector specifying the number of rows and columns in
H or a scalar, in which case H is a square matrix.
The default HSIZE is [3 3].
2 、 'disk'
circular averaging filter
為圓形區域均值濾波,參數為 radius 代表區域半徑,默認值為 5.
H = FSPECIAL('disk',RADIUS) returns a circular averaging filter
(pillbox) within the square matrix of side 2*RADIUS+1.
The default RADIUS is 5.
3 、 'gaussian'
Gaussian lowpass filter
為高斯低通濾波,有兩個參數, hsize 表示模板尺寸,默認值為【 3 3 】, sigma 為濾波器的標准值,單位為像素,默認值為 0.5.
H = FSPECIAL('gaussian',HSIZE,SIGMA) returns a rotationally
symmetric Gaussian lowpass filter
of size HSIZE with standard
deviation SIGMA (positive). HSIZE can be a vector specifying the
number of rows and columns in H or a scalar, in which case H is a
square matrix.
The default HSIZE is [3 3], the default SIGMA is 0.5.
4 、 'laplacian'
h = fspecial(type , para)
其中 type 指定算子的類型, para 指定相應的參數;
type 的類型有:
1 、 'average'
averaging filter
為均值濾波,參數為 hsize 代表模板尺寸,默認值為【 3 , 3 】。
H = FSPECIAL('average',HSIZE) returns an averaging filter H of size
HSIZE. HSIZE can be a vector specifying the number of rows and columns in
H or a scalar, in which case H is a square matrix.
The default HSIZE is [3 3].
2 、 'disk'
circular averaging filter
為圓形區域均值濾波,參數為 radius 代表區域半徑,默認值為 5.
H = FSPECIAL('disk',RADIUS) returns a circular averaging filter
(pillbox) within the square matrix of side 2*RADIUS+1.
The default RADIUS is 5.
3 、 'gaussian'
Gaussian lowpass filter
為高斯低通濾波,有兩個參數, hsize 表示模板尺寸,默認值為【 3 3 】, sigma 為濾波器的標准值,單位為像素,默認值為 0.5.
H = FSPECIAL('gaussian',HSIZE,SIGMA) returns a rotationally
symmetric Gaussian lowpass filter
of size HSIZE with standard
deviation SIGMA (positive). HSIZE can be a vector specifying the
number of rows and columns in H or a scalar, in which case H is a
square matrix.
The default HSIZE is [3 3], the default SIGMA is 0.5.
4 、 'laplacian'
laplacian filter approximating the 2-D Laplacian operator
為拉普拉斯算子,參數 alpha 用於控制算子形狀,取值范圍為【 0 , 1 】,默認值為 0.2.
H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filter
approximating the shape of the two-dimensional Laplacian
operator. The parameter ALPHA controls the shape of the
Laplacian and must be in the range 0.0 to 1.0.
The default ALPHA is 0.2.
5 、 'log'
Laplacian of Gaussian filter
為拉普拉斯高斯算子,有兩個參數, hsize 表示模板尺寸,默認值為【 3 3 】, sigma 為濾波器的標准差,單位為像素,默認值為 0.5.
H = FSPECIAL('log',HSIZE,SIGMA) returns a rotationally symmetric
Laplacian of Gaussian filter of size HSIZE with standard deviation
SIGMA (positive). HSIZE can be a vector specifying the number of rows
and columns in H or a scalar, in which case H is a square matrix.
The default HSIZE is [5 5], the default SIGMA is 0.5.
6 、 'motion'
motion filter
為運動模糊算子,有兩個參數,表示攝像物體逆時針方向以 theta 角度運動了 len 個像素, len 的默認值為 9 , theta 的默認值為 0 ;
H = FSPECIAL('motion',LEN,THETA) returns a filter to approximate, once
convolved with an image, the linear motion of a camera by LEN pixels,
with an angle of THETA degrees in a counter-clockwise direction. The
filter becomes a vector for horizontal and vertical motions.
The default LEN is 9, the default THETA is 0, which corresponds to a
horizontal motion of 9 pixels.
7 、 'prewitt'
Prewitt horizontal edge-emphasizing filter
用於邊緣增強,大小為【 3 3 】,無參數
H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizes
horizontal edges by approximating a vertical gradient. If you need to
emphasize vertical edges, transpose the filter H: H'.
[1 1 1;0 0 0;-1 -1 -1].
8 、 'sobel'
Sobel horizontal edge-emphasizing filter
用於邊緣提取,無參數
H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizes
horizontal edges utilizing the smoothing effect by approximating a
vertical gradient. If you need to emphasize vertical edges, transpose
the filter H: H'.
[1 2 1;0 0 0;-1 -2 -1].
9 、 'unsharp'
unsharp contrast enhancement filter
為對比度增強濾波器。參數 alpha 用於控制濾波器的形狀,范圍為【 0 , 1 】,默認值為 0.2.
H = FSPECIAL('unsharp',ALPHA) returns a 3-by-3 unsharp contrast
enhancement filter. FSPECIAL creates the unsharp filter from the
negative of the Laplacian filter with parameter ALPHA. ALPHA controls
the shape of the Laplacian and must be in the range 0.0 to 1.0.
The default ALPHA is 0.2.
為拉普拉斯算子,參數 alpha 用於控制算子形狀,取值范圍為【 0 , 1 】,默認值為 0.2.
H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filter
approximating the shape of the two-dimensional Laplacian
operator. The parameter ALPHA controls the shape of the
Laplacian and must be in the range 0.0 to 1.0.
The default ALPHA is 0.2.
5 、 'log'
Laplacian of Gaussian filter
為拉普拉斯高斯算子,有兩個參數, hsize 表示模板尺寸,默認值為【 3 3 】, sigma 為濾波器的標准差,單位為像素,默認值為 0.5.
H = FSPECIAL('log',HSIZE,SIGMA) returns a rotationally symmetric
Laplacian of Gaussian filter of size HSIZE with standard deviation
SIGMA (positive). HSIZE can be a vector specifying the number of rows
and columns in H or a scalar, in which case H is a square matrix.
The default HSIZE is [5 5], the default SIGMA is 0.5.
6 、 'motion'
motion filter
為運動模糊算子,有兩個參數,表示攝像物體逆時針方向以 theta 角度運動了 len 個像素, len 的默認值為 9 , theta 的默認值為 0 ;
H = FSPECIAL('motion',LEN,THETA) returns a filter to approximate, once
convolved with an image, the linear motion of a camera by LEN pixels,
with an angle of THETA degrees in a counter-clockwise direction. The
filter becomes a vector for horizontal and vertical motions.
The default LEN is 9, the default THETA is 0, which corresponds to a
horizontal motion of 9 pixels.
7 、 'prewitt'
Prewitt horizontal edge-emphasizing filter
用於邊緣增強,大小為【 3 3 】,無參數
H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizes
horizontal edges by approximating a vertical gradient. If you need to
emphasize vertical edges, transpose the filter H: H'.
[1 1 1;0 0 0;-1 -1 -1].
8 、 'sobel'
Sobel horizontal edge-emphasizing filter
用於邊緣提取,無參數
H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizes
horizontal edges utilizing the smoothing effect by approximating a
vertical gradient. If you need to emphasize vertical edges, transpose
the filter H: H'.
[1 2 1;0 0 0;-1 -2 -1].
9 、 'unsharp'
unsharp contrast enhancement filter
為對比度增強濾波器。參數 alpha 用於控制濾波器的形狀,范圍為【 0 , 1 】,默認值為 0.2.
H = FSPECIAL('unsharp',ALPHA) returns a 3-by-3 unsharp contrast
enhancement filter. FSPECIAL creates the unsharp filter from the
negative of the Laplacian filter with parameter ALPHA. ALPHA controls
the shape of the Laplacian and must be in the range 0.0 to 1.0.
The default ALPHA is 0.2.
二、imfilter:對任意類型數組或多維圖像進行濾波。
用法:
B = imfilter(A,H)
B = imfilter(A,H,option1,option2,...)
或寫作 g = imfilter(f, w, filtering_mode, boundary_options, size_options)
其中, f 為輸入圖像, w 為濾波掩模, g 為濾波後圖像。 filtering_mode 用於指定在濾波過程中是使用「相關」還是「卷積」。 boundary_options 用於處理邊界充零問題,邊界的大小由濾波器的大小確定。具體參數選項見下表:
舉例:
B = imfilter(A,H,option1,option2,...)
或寫作 g = imfilter(f, w, filtering_mode, boundary_options, size_options)
其中, f 為輸入圖像, w 為濾波掩模, g 為濾波後圖像。 filtering_mode 用於指定在濾波過程中是使用「相關」還是「卷積」。 boundary_options 用於處理邊界充零問題,邊界的大小由濾波器的大小確定。具體參數選項見下表:
選項 | 描述 | |
filtering_mode | 『corr』 | 通過使用相關來完成,該值為默認。 |
『conv』 | 通過使用卷積來完成 | |
boundary_options | 『X』 | 輸入圖像的邊界通過用值X(無引號)來填充擴展 其默認值為0 |
『replicate』 | 圖像大小通過復制外邊界的值來擴展 | |
『symmetric』 | 圖像大小通過鏡像反射其邊界來擴展 | |
『circular』 | 圖像大小通過將圖像看成是一個二維周期函數的一個周期來擴展 | |
size_options | 『full』 | 輸出圖像的大小與被擴展圖像的大小相同 |
『same』 | 輸出圖像的大小與輸入圖像的大小相同。這可通過將濾波掩模的中心點的偏移限制到原圖像中包含的點來實現,該值為默認值。 |
舉例:
originalRGB = imread('peppers.png');
imshow(originalRGB)
h = fspecial('motion', 50, 45);% 創建一個濾波器
filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)
imshow(originalRGB)
h = fspecial('motion', 50, 45);% 創建一個濾波器
filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)