Advertisement
zergon321

Gabor filter

Dec 5th, 2020
894
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.24 KB | None | 0 0
  1. img = imread("C:\Users\maxim\OneDrive\Изображения\doggo.png");
  2. imgGray = rgb2gray(img);
  3.  
  4. imgSize = size(img);
  5. numRows = imgSize(1);
  6. numCols = imgSize(2);
  7.  
  8. waveLengthMin = 4 / sqrt(2);
  9. waveLengthMax = hypot(numRows, numCols);
  10. n = floor(log2(waveLengthMax / waveLengthMin));
  11. waveLength = 2.^(0:(n - 2)) * waveLengthMin;
  12.  
  13. deltaTheta = 45;
  14. orientation = 0:deltaTheta:(180 - deltaTheta);
  15.  
  16. g = gabor(waveLength, orientation);
  17. gabormag = imgaborfilt(imgGray, g);
  18.  
  19. for i = 1:length(g)
  20.     sigma = 0.5*g(i).Wavelength;
  21.     K = 3;
  22.     gabormag(:,:,i) = imgaussfilt(gabormag(:,:,i),K*sigma);
  23. end
  24.  
  25. X = 1:numCols;
  26. Y = 1:numRows;
  27. [X, Y] = meshgrid(X, Y);
  28. featureSet = cat(3, gabormag, X);
  29. featureSet = cat(3, featureSet, Y);
  30.  
  31. numPoints = numRows * numCols;
  32. X = reshape(featureSet, numRows * numCols, []);
  33.  
  34. X = bsxfun(@minus, X, mean(X));
  35. X = bsxfun(@rdivide, X, std(X));
  36.  
  37. coeff = pca(X);
  38. feature2DImage = reshape(X*coeff(:, 1), numRows, numCols);
  39.  
  40. L = kmeans(X, 2, 'Replicates', 5);
  41. L = reshape(L, [numRows numCols]);
  42.  
  43. Aseg1 = zeros(size(img), 'like', img);
  44. Aseg2 = zeros(size(img), 'like', img);
  45. BW = L == 2;
  46. BW = repmat(BW, [1 1 3]);
  47. Aseg1(BW) = img(BW);
  48. Aseg2(~BW) = img(~BW);
  49. figure, imshowpair(Aseg1, Aseg2, 'montage');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement