Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
1Activity
0 of .
Results for:
No results containing your search query
P. 1
fspecial

fspecial

Ratings: (0)|Views: 37|Likes:
Published by Akhmat Basori

More info:

Published by: Akhmat Basori on Jan 16, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/16/2012

pdf

text

original

 
1/9/1211:21 AMC:\MATLAB7\toolbox\images\images\fspecial.m1 of 7function h = fspecial(varargin)%FSPECIAL Create 2-D special filters.% H = FSPECIAL(TYPE) creates a two-dimensional filter H of the% specified type. Possible values for TYPE are:%% 'average' averaging filter% 'disk' circular averaging filter% 'gaussian' Gaussian lowpass filter% 'laplacian' filter approximating the 2-D Laplacian operator% 'log' Laplacian of Gaussian filter% 'motion' motion filter% 'prewitt' Prewitt horizontal edge-emphasizing filter% 'sobel' Sobel horizontal edge-emphasizing filter% 'unsharp' unsharp contrast enhancement filter%% Depending on TYPE, FSPECIAL may take additional parameters% which you can supply. These parameters all have default% values.%% 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].%% H = FSPECIAL('disk',RADIUS) returns a circular averaging filter% (pillbox) within the square matrix of side 2*RADIUS+1.% The default RADIUS is 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.%% 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.%% 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.%% 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
 
1/9/1211:21 AMC:\MATLAB7\toolbox\images\images\fspecial.m2 of 7% horizontal motion of 9 pixels.%% 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].%% 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].%% 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.%% Class Support% -------------% H is of class double.%% Example% -------% I = imread('cameraman.tif');% subplot(2,2,1);imshow(I);title('Original Image');% H = fspecial('motion',20,45);% MotionBlur = imfilter(I,H,'replicate');% subplot(2,2,2);imshow(MotionBlur);title('Motion Blurred Image');% H = fspecial('disk',10);% blurred = imfilter(I,H,'replicate');% subplot(2,2,3);imshow(blurred);title('Blurred Image');% H = fspecial('unsharp');% sharpened = imfilter(I,H,'replicate');% subplot(2,2,4);imshow(sharpened);title('Sharpened Image');%% See also CONV2, EDGE, FILTER2, FSAMP2, FWIND1, FWIND2, IMFILTER.% Copyright 1993-2003 The MathWorks, Inc.% $Revision: 5.28.4.2 $ $Date: 2003/01/26 05:55:24 $[type, p2, p3] = ParseInputs(varargin{:});switch typecase'average'% Smoothing filtersiz = p2;h = ones(siz)/prod(siz);case'disk'% Disk filter
 
1/9/1211:21 AMC:\MATLAB7\toolbox\images\images\fspecial.m3 of 7rad = p2;crad = ceil(rad-0.5);[x,y] = meshgrid(-crad:crad,-crad:crad);maxxy = max(abs(x),abs(y));minxy = min(abs(x),abs(y));m1 = (rad^2 < (maxxy+0.5).^2 + (minxy-0.5).^2).*(minxy-0.5) +...(rad^2 >= (maxxy+0.5).^2 + (minxy-0.5).^2).*...sqrt(rad^2 - (maxxy + 0.5).^2);m2 = (rad^2 > (maxxy-0.5).^2 + (minxy+0.5).^2).*(minxy+0.5) +...(rad^2 <= (maxxy-0.5).^2 + (minxy+0.5).^2).*...sqrt(rad^2 - (maxxy - 0.5).^2);sgrid = (rad^2*(0.5*(asin(m2/rad) - asin(m1/rad)) +...0.25*(sin(2*asin(m2/rad)) - sin(2*asin(m1/rad)))) -...(maxxy-0.5).*(m2-m1) + (m1-minxy+0.5))....*((((rad^2 < (maxxy+0.5).^2 + (minxy+0.5).^2) &...(rad^2 > (maxxy-0.5).^2 + (minxy-0.5).^2)) |...((minxy==0)&(maxxy-0.5 < rad)&(maxxy+0.5>=rad))));sgrid = sgrid + ((maxxy+0.5).^2 + (minxy+0.5).^2 < rad^2);sgrid(crad+1,crad+1) = min(pi*rad^2,pi/2);if ((crad>0) & (rad > crad-0.5) & (rad^2 < (crad-0.5)^2+0.25))m1 = sqrt(rad^2 - (crad - 0.5).^2);m1n = m1/rad;sg0 = 2*(rad^2*(0.5*asin(m1n) + 0.25*sin(2*asin(m1n)))-m1*(crad-0.5));sgrid(2*crad+1,crad+1) = sg0;sgrid(crad+1,2*crad+1) = sg0;sgrid(crad+1,1) = sg0;sgrid(1,crad+1) = sg0;sgrid(2*crad,crad+1) = sgrid(2*crad,crad+1) - sg0;sgrid(crad+1,2*crad) = sgrid(crad+1,2*crad) - sg0;sgrid(crad+1,2) = sgrid(crad+1,2) - sg0;sgrid(2,crad+1) = sgrid(2,crad+1) - sg0;endsgrid(crad+1,crad+1) = min(sgrid(crad+1,crad+1),1);h = sgrid/sum(sgrid(:));case'gaussian'% Gaussian filtersiz = (p2-1)/2;std = p3;[x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));arg = -(x.*x + y.*y)/(2*std*std);h = exp(arg);h(h<eps*max(h(:))) = 0;sumh = sum(h(:));if sumh ~= 0,h = h/sumh;end;case'laplacian'% Laplacian filter

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->