Need to detect the edges of a rectangle using Image processing?

12 views (last 30 days)
So I first need to read the image file of student ID card get the edges of the ID card and draw a rectangle covering the edges and the crop the detected edges of the image.
These are the methods I used so far
--> To read the image file - imread()
--> To convert to grayscale - rgb2gray()
--> To detect the edges - edge() using the Canny method
--> To get only edge data - bwconvhull()
--> To draw the rectangle over the ID - regionprops
These are my main idea the solutions works but its not that accurate. Pls if somebody knows it that would be really helpful

Answers (1)

drummer
drummer on 30 Oct 2020
Edited: drummer on 30 Oct 2020
What if you use dilation-erosion approaches?
  1 Comment
Jeen Xavier
Jeen Xavier on 30 Oct 2020
This is my existing code which I have made its not the best, Do you know any suitable fix for my code to be more optimal?
f = imread('image-001.bmp'); %read the image file
% Convert the image to a gray scale image
rgb = rgb2gray(f);
BW1 = edge(rgb,'Canny'); %putting the edge function to mask the image
CH = bwconvhull(BW1);
[L n] = bwlabel(CH,8);
blobs = regionprops(L, 'BoundingBox');
% blobs(1).BoundingBox % the third and fourth row shows the width and height
width = blobs(1).BoundingBox(3)
height = blobs(1).BoundingBox(4)
imshow(f);
rectangle('Position',blobs(1).BoundingBox,'Edgecolor','g');
% cropping the new image with respect to the rectangle created
new_crop = imcrop(f, [blobs(1).BoundingBox(1) blobs(1).BoundingBox(2) blobs(1).BoundingBox(3) blobs(1).BoundingBox(4)]);
imshow(new_crop)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!