How to remove frame boundary from object boundary

1 visualizzazione (ultimi 30 giorni)
How can I remove the false object boundaries detected at the frame edges ? I only need the curve part to be my boundary.
Here is my code:
clc; clear; close all;
OM = imread('002.jpg');
imshow(OM)
W = rgb2gray(OM);
imshow(W)
binaryImage=imbinarize(W);
hold on
imshow(binaryImage);
BW = bwareafilt(binaryImage,1);
[B,L,N] = bwboundaries(BW,'noholes');
imshow(BW); hold on;
for k=1:length(B),
boundary = B{k};
if(k > N)
plot(boundary(:,2), boundary(:,1), 'g','LineWidth',2);
else
plot(boundary(:,2), boundary(:,1), 'r','LineWidth',2);
end
end
  2 Commenti
Varun Garg
Varun Garg il 5 Giu 2018
Can you attach the image for me to replicate the whole thing?
Syed Sameer Ul Hasan
Syed Sameer Ul Hasan il 5 Giu 2018

Sure. Here it is. https://drive.google.com/file/d/1hMiDy5iIeS_Xlu1JilLBMXdrx0NRow9K/view?usp=drivesdk

Which transforms to:

https://drive.google.com/file/d/1TVenArXSqDcD2JSC4Md4R40LpTNuNJxT/view?usp=drivesdk

Accedi per commentare.

Risposte (1)

KSSV
KSSV il 5 Giu 2018
If (x,y) are your boundary points......something like below should work:
[m,n] = size(I) ;
%
x(x==1) = [] ;y(x==1)= [] ;
x(x==m) = [] ;y(x==m) = [] ;
x(y==n) = [] ;y(y==n) = [] ;

Categorie

Scopri di più su Mathematics and Optimization in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by