رباتیک و هوافضا

دانلود پروژه ی تشخیص پلاک خودرو ایرانی با متلب به همراه کد برنامه

تشخص پلاک خودرو ایرانی با متلب

به نام خدا

پروژه ی تشخص پلاک خودرو ایرانی با متلب

تشخص پلاک خودرو ایرانی با متلب

پردازش تصویر یکی از جذاب ترین مباحث علم روز است که روزانه دستاورد های جدیدی در آن محقق می شود. پردازش تصویر غیر ممکن ها را ممکن می سازد. در این پروژه قصد داریم با استفاده از متلب پلاک خودرو را تشخیص دهیم. این پروژه یکی از بهترین راه ها برای تشخیص پلاک ایرانی است.

تشخیص پلاک یکی از جدید ترین کابرد های علم پردازش تصویر است.از این پروژه می توان برای مقاصد امنیتی استفاده کرد. دوربین های راهنمایی رانندگی نیز برای برداشتن پلاک متخلفین از چنین برنامه ای استفده می کنند.

نحوه ی استفاده:

ابتدا فایل  زیر را دانلود کرده سپس آن را اکسترکت کنید.

دانلود فایل

 

فایل زیپ شامل فایل Demo ، فایل لایسنس و دیتابیس می باشد. فایل Demo  شامل کد های پروژه ی تشخص پلاک خودرو ایرانی با متلب می باشد. در دیتابیس ۹ عدد تصویر نمونه ی خودرو می باشد که فرمت های آن ها jpg می باشد.

سپس روی فایل Demo  کلیک کنید تا وارد برنامه ی متلب شوید.

بیشتر بخوانید...  آموزش پروژه محور آردوینو – جلسه دوازدهم نمایشگر کاراکتری 2

برای انتخاب عکس می توانید عکس های دیتا بیس را انتخاب کنید. درصورت نیاز می توانید به آن اضافه کنید.

برای راه اندازی پروژه در مقابل IN نام عکس مورد نظر خود را وارد کنید. مطابق شکل زیر.

تشخص پلاک خودرو ایرانی با متلب

دقت کنید تصویر جدیدی که وارد دیتابیس می کنید ، قبل از اجرای برنامه فرمت آن را اگر jpg  نمی باشد در کد متلب تغییر دهید.

سپس برنامه را ران کنید پلاک مانند زیر قابل مشاهده است.

تشخص پلاک خودرو ایرانی با متلب

دانلود کد به تنهایی :

دانلود فایل
%% clear command windows
clc
clear all
close all
%% Read Image
In    = 8;                              % select a number between 1 to 9
Im    = imread(fullfile('.', 'DataBase', strcat(num2str(In), '.jpg'))); % read image
I     = im2double(rgb2gray(Im));        % rgb to gray
% figure();imshow(I)
%% Sobel Masking 
SM    = [-1 0 1;-2 0 2;-1 0 1];         % Sobel Vertical Mask
IS    = imfilter(I,SM,'replicate');     % Filter Image Using Sobel Mask
IS    = IS.^2;                          % Consider Just Value of Edges & Fray Weak Edges
% figure();imshow(IS)
%% Normalization
IS    = (IS-min(IS(:)))/(max(IS(:))-min(IS(:))); % Normalization
% figure();imshow(IS)
%% Threshold (Otsu)
level = graythresh(IS);                 % Threshold Based on Otsu Method
IS    = im2bw(IS,level);
% figure();imshow(IS)
%% Histogram
S     = sum(IS,2);                      % Edge Horizontal Histogram
% figure();plot(1:size(S,1),S)
% view(90,90)
%% Plot
% figure()
% subplot(1,2,1);imshow(IS)
% subplot(1,2,2);plot(1:size(S,1),S)
% axis([1 size(IS,1) 0 max(S)]);view(90,90)
%% Plate Location
T1    = 0.35;                           % Threshold On Edge Histogram
PR    = find(S > (T1*max(S)));          % Candidate Plate Rows
%% Masked Plate
Msk   = zeros(size(I));
Msk(PR,:) = 1;                          % Mask
MB    = Msk.*IS;                        % Candidate Plate (Edge Image)
% figure();imshow(MB)
%% Morphology (Dilation - Vertical)
Dy    = strel('rectangle',[80,4]);      % Vertical Extension
MBy   = imdilate(MB,Dy);                % By Dilation
MBy   = imfill(MBy,'holes');            % Fill Holes
% figure();imshow(MBx)
%% Morphology (Dilation - Horizontal)
Dx    = strel('rectangle',[4,80]);      % Horizontal Extension
MBx   = imdilate(MB,Dx);                % By Dilation
MBx   = imfill(MBx,'holes');            % Fill Holes
% figure();imshow(MBy)
%% Joint Places
BIM   = MBx.*MBy;                       % Joint Places
% figure();imshow(BIM)
%% Morphology (Dilation - Horizontal)
Dy    = strel('rectangle',[4,30]);      % Horizontal Extension
MM    = imdilate(BIM,Dy);               % By Dilation
MM    = imfill(MM,'holes');             % Fill Holes
% figure();imshow(MM)
%% Erosion
Dr    = strel('line',50,0);             % Erosion
BL    = imerode(MM,Dr);
% figure();imshow(BL)
%% Find Biggest Binary Region (As a Plate Place)
[L,num] = bwlabel(BL);                  % Label (Binary Regions)               
Areas   = zeros(num,1);
for i = 1:num                           % Compute Area Of Every Region
[r,c,v]  = find(L == i);                % Find Indexes
Areas(i) = sum(v);                      % Compute Area    
end 
[La,Lb] = find(Areas==max(Areas));      % Biggest Binary Region Index
%% Post Processing
[a,b]   = find(L==La);                  % Find Biggest Binary Region (Plate)
[nRow,nCol] = size(I);
FM      = zeros(nRow,nCol);             % Smooth and Enlarge Plate Place
T       = 10;                           % Extend Plate Region By T Pixel
jr      = (min(a)-T :max(a)+T);
jc      = (min(b)-T :max(b)+T);
jr      = jr(jr >= 1 & jr <= nRow);
jc      = jc(jc >= 1 & jc <= nCol);
FM(jr,jc) = 1; 
PL      = FM.*I;                        % Detected Plate
% figure();imshow(FM)
% figure();imshow(PL)
%% Plot
imshow(Im); title('Detected Plate')
hold on
rectangle('Position',[min(jc),min(jr),max(jc)-min(jc),...
max(jr)-min(jr)],'LineWidth',4,'EdgeColor','r')
hold off

 

بیشتر بخوانید...  آموزش ساخت مدار فلزیاب با استفاده از آی سی 555

دیدگاه‌ها (0)

*
*