Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- im = imread('prova2.jpg');
- im1D = rgb2gray(im);
- f = figure; set(f,'name','Original image'); imshow(im1D,[]);
- imBin = im1D > (graythresh(im1D)*255);
- imBinNeg = 1 - imBin;
- f = figure; set(f,'name','Binarized negated image'); imshow(imBinNeg,[]);
- imBN = imBinNeg;
- imSize = size(imBN);
- %while (no acabemos xd)
- % Step 1
- flaggedPixels = ones(imSize(1),imSize(2));
- for i = 1:imSize(1)
- for j = 1:imSize(2)
- if imBN(i,j) == 1
- neighbors = [imBN(i-1,j) imBN(i-1,j+1) imBN(i,j+1) imBN(i+1,j+1) imBN(i+1,j) imBN(i+1,j-1) imBN(i,j-1) imBN(i-1,j-1)];
- if min(neighbors) == 0 % The pixel contains at least a 0 valued neighbor
- N = sum(neighbors);
- if N >= 2 && N <= 6 % Condition a)
- Ts = CountTransitions(neighbors);
- if Ts == 1 % Condition b)
- if neighbors(4-(1)) == 0 || neighbors(6-(1)) == 0 || neighbors(2-(1))*neighbors(8-(1)) == 0 % Conditions c) & d)
- flaggedPixels(i,j) = 0; % Mark the pixel to be removed later
- end
- end
- end
- end
- end
- end
- end
- if min(flaggedPixels) == 0
- imBN = imBN .* flaggedPixels;
- end
- % Step 2
- flaggedPixels = ones(imSize(1),imSize(2));
- for i = 1:imSize(1)
- for j = 1:imSize(2)
- if imBN(i,j) == 1
- neighbors = [imBN(i-1,j) imBN(i-1,j+1) imBN(i,j+1) imBN(i+1,j+1) imBN(i+1,j) imBN(i+1,j-1) imBN(i,j-1) imBN(i-1,j-1)];
- if min(neighbors) == 0 % The pixel contains at least a 0 valued neighbor
- N = sum(neighbors);
- if N >= 2 && N <= 6 % Condition a)
- Ts = CountTransitions(neighbors);
- if Ts == 1 % Conditions a) & b) are the same ones as before
- if neighbors(8-(1)) == 0 || neighbors(2-(1)) || neighbors(4-(1))*nighbors(6-(1)) == 0 % Conditions c) & d)
- flaggedPixels(i,j) = 0;
- end
- end
- end
- end
- end
- end
- end
- if min(flaggedPixels) == 0
- imBN = imBN .* flaggedPixels;
- end
- %endwhile
Advertisement
Add Comment
Please, Sign In to add comment