Sto provando ad usare douglas-peucker
algoritmo per semplificare la mia collegato components.I mettere le componenti collegati utilizzando bwlabel
e inviarlo al douglas
algorithm.Here è il link del algoritmo che io sono using- Douglas-Peucker Algorithm matlabLinea Semplificazione elaborazione delle immagini
Ecco il mio code-
clc;
image=imread('mmm1.jpg');
image = im2bw(image);
[imx imy]=size(image);
n1=zeros(imx,imy);
I=zeros(imx,imy);
L = bwlabel(image,8) ;%Calculating connected components
[r,c] = find(L==1); %Using 1st connected component
n1=zeros(imx,imy);
rc = [r c];
[ps mm] = dpsimplify(rc,1); %Douglas-Peucker algorithm
%To display original component
%___________________________________________________________________
[sx sy]=size(rc);
for j=1:sx
x1=rc(j,1);
y1=rc(j,2);
n1(x1,y1)=1;
end
figure,imshow(n1);
%___________________________________________________________________
%To display component after simplification
n1=zeros(imx,imy);
[sx sy]=size(mm);
for j=1:sx
x1=rc(j,1);
y1=rc(j,2);
n1(x1,y1)=1;
end
figure,imshow(n1);
Questo era il mio ingresso originale immagine-
.210Questa era la mia componente 1st
a cui ho applicato Douglas-Peucker
Algorithm-
Questo è stato il risultato di Algorithm-
Il codice di Douglas-Peucker si possono trovare nel link che ho citato sopra.Così, La mia domanda è perché la semplificazione non sta accadendo per l'intero componente? Come posso risolvere questo?
Immagino perché hai bisogno di punti o linee che descrivono la "linea", non i pixel. Cerca di ottenere prima lo scheletro dell'immagine. https://uk.mathworks.com/help/images/ref/bwmorph.html –
PD: Perché desideri semplificare queste linee? Cosa ti aspetti? Sono semplici come possono ottenere. –
@AnderBiguri Questo perché quando eseguo l'algoritmo di rivelazione degli angoli molte delle linee oblique in questa immagine che non sono abbastanza semplificate danno un risultato errato. Il rilevamento del raster non viene eseguito in queste immagini poiché rileva troppi punti d'angolo. – Noober