How can I extract the rectangular shapes form the binary images without using bwareaopen function?

Hello every one,
Could you please help me, how to automatically extract the rectangular object in the following two images? I used bwareaopen function to remove small objects, but it sometimes removes the region of interest because the noisy objects are bigger than the number plate.

3 comentarios

function W = Classify(ImageRead)
RGB = imread('test.bmp');
figure,
imshow(RGB),
title('Original Image');
GRAY = rgb2gray(RGB);
figure,
imshow(GRAY),
title('Gray Image');
threshold = graythresh(GRAY);
BW = im2bw(GRAY, threshold);
figure,
imshow(BW),
title('Binary Image');
BW = ~ BW;
figure,
imshow(BW),
title('Inverted Binary Image');
[B,L] = bwboundaries(BW, 'noholes');
STATS = regionprops(L, 'all'); % we need 'BoundingBox' and 'Extent'
% Step 7: Classify Shapes according to properties
% Square = 3 = (1 + 2) = (X=Y + Extent = 1)
% Rectangular = 2 = (0 + 2) = (only Extent = 1)
% Circle = 1 = (1 + 0) = (X=Y , Extent < 1)
% UNKNOWN = 0
figure,
imshow(RGB),
title('Results');
hold on
for i = 1 : length(STATS)
W(i) = uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4)) < 0.1);
W(i) = W(i) + 2 * uint8((STATS(i).Extent - 1) == 0 );
centroid = STATS(i).Centroid;
switch W(i)
case 1
plot(centroid(1),centroid(2),'wO');
case 2
plot(centroid(1),centroid(2),'wX');
case 3
plot(centroid(1),centroid(2),'wS');
end
end
return
from Python Code;
Code :
Main code 1 :
import cv2
import numpy as np
import os
im = cv2.imread('input1.jpg')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 220, 255, 0)
edges = cv2.Canny(thresh,150,180,apertureSize = 3)
ret, labels = cv2.connectedComponents(~thresh)
x=0
[m,n]=np.shape(thresh)
c=1
cwd = os.getcwd()
msk=np.zeros(np.shape(thresh))
while c
msk=np.zeros(np.shape(thresh))
msk[(labels==c)]=[255]
msk=np.array(msk,dtype=np.uint8)
msk_img=str(c)+'.jpg'
filename = os.path.join(cwd, msk_img)
cv2.imwrite(filename,msk)
c=c+1
print("Total Polygon Objects ", c)
Dear Selva Karna, thank you very much. I have applied the MATLAB code but still it dose not work.

Iniciar sesión para comentar.

Respuestas (1)

Hi Javid,
One simple method would be to use the Image Segmenter App where you can draw the region of interest and extract it from the image.

1 comentario

Dear Keerthana Chiruvolu, I think the Image Segmenter app will not solve the problem because my interest region will be in a different location. For example, the front or rear of the car or image may be taken from varying angles. Therefore, I look for a method that can automatically find the number plate area in the image.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 28 de Feb. de 2021

Editada:

el 7 de Mzo. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by