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

조회 수: 13 (최근 30일)
Jeen Xavier
Jeen Xavier 2020년 10월 30일
댓글: Jeen Xavier 2020년 10월 30일
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

답변 (1개)

drummer
drummer 2020년 10월 30일
편집: drummer 2020년 10월 30일
What if you use dilation-erosion approaches?
  댓글 수: 1
Jeen Xavier
Jeen Xavier 2020년 10월 30일
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)

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by