How to remove frame boundary from object boundary

2 views (last 30 days)
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 Comments
Varun Garg
Varun Garg on 5 Jun 2018
Can you attach the image for me to replicate the whole thing?
Syed Sameer Ul Hasan
Syed Sameer Ul Hasan on 5 Jun 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

Sign in to comment.

Answers (1)

KSSV
KSSV on 5 Jun 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) = [] ;

Categories

Find more on Mathematics and Optimization in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!