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

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

سلام. برای شما پروژه تشخیص پلاک خودرو ایرانی با متلب به همراه آموزش را آماده کردیم. این پروژه پردازش تصویر با متلب را از دست ندهید !

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

"<yoastmark

پردازش تصویر ، همیشه یکی از مباحث پرطرفدار و البته پیچیده در دنیای مهندسان بوده است و در موارد زیادی کاربرد دارد. همینطور که میدانید از پردازش تصویر بیشتر برای شناسائی پلاک خودرو های متخلف استفاده میشود. همچنین میشود در مباحث پیچیده تر پردازش تصویر ، در زمینه پردازش تصویر چهره افراد استفاده کرد. ما در این پروژه میخواهیم یک برنامه شناسائی پلاک خودرو های ایرانی با نرم فزار متلب را بنویسیم.

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

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

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

در این قسمت از کد ، روبروی IN آدرس تصویر را انتخاب کنید.سپس برنامه را اجرا کنید تا تشخیص پلاک را ببینید.

%% 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)

توجه داشته باشید تصاویر را با قرمت 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

توضیحات اضافه پروژه شناسائی پلاک با متلب

پروژه شناسائی پلاک با متلب

آیا تا به حال تعجب کرده اید که چگونه یک سیستم ANPR (تشخیص خودکار شماره صفحه) به کار می رود؟ بگذارید مفهوم پشت آن را برای شما تعریف کنم ، دوربین سیستم ANPR تصویر صفحه پلاک خودرو را ضبط می کند و سپس تصویر از طریق تعداد زیادی الگوریتم پردازش می شود تا تبدیل عددی آلفا تصویر به قالب متن فراهم شود. سیستم ANPR در بسیاری از مکان ها مانند پمپ های بنزین ، مراکز خرید ، فرودگاه ها ، بزرگراه ها ، غرفه های عوارض ، هتل ها ، بیمارستان ها ، پارکینگ ها ، نقاط بازرسی و دفاع و نظامی و غیره استفاده می شود.

ابزارهای پردازش تصویر بسیاری برای تشخیص این شماره صفحه وجود دارد ، اما در اینجا در این آموزش ما از پردازش تصویر MATLAB استفاده خواهیم کرد تا شماره پلاک خودرو را در قالب متن بدست آوریم. اگر با MATLAB یا پردازش تصویر آشنایی دارید ، پروژه های متلب قبلی ما را بررسی کنید:

شروع کار با متلب: مقدمه ای سریع
شروع با پردازش تصویر با استفاده از متلب
اول ، اجازه دهید من شما را در مورد مفهومی که برای تشخیص صفحات شماره استفاده می کنیم ، مختصر بیان کنم. برای این پروژه سه برنامه یا پرونده ’.m وجود دارد.

مشاهده تمامی پروژه های متلب

آموزش تشخیص پلاک خودرو با MATLAB

قالب ایجاد (template_creation.m) – برای استفاده از تصاویر ذخیره شده از الفبایی و ذخیره آنها به عنوان یک الگوی جدید در حافظه MATLAB استفاده می شود.
تشخیص نامه (Letter_detection.m) – کاراکترها را از تصویر ورودی می خواند و بالاترین الفبای مربوط به همسان را پیدا می کند.
Plate Detection (Plate_detection.m) – تصویر را پردازش کرده و سپس برای شناسایی شماره با دو m-پرونده فوق تماس بگیرید.
اکنون ، ما در مورد نحوه رمزگذاری این فایلهای m و آنچه باید انجام دهید قبل از شروع کدنویسی یاد خواهیم گرفت. پس از گذراندن این آموزش ، می توانید تمام فایلهای کد و فیلم توضیح توضیحی در انتهای این پروژه را پیدا کنید.

حتما ببینید :  پروژه دیکدر ریموت مادون قرمز با آردوینو و ثبت در اکسل

ایجاد الگو
ابتدا یک پوشه برای پروژه ایجاد کنید (نام پوشه من Number Number Plate Detection است) برای ذخیره و ذخیره فایل ها. ما تصاویر باینری همه حروف و اعداد را در زیر پوشه ای به نام ‘alpha ذخیره کرده ایم.

اکنون ، مطابق تصویر زیر ، پنجره Editor را در MATLAB باز کنید ،

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

اگر با اصطلاحات اساسی متلب آشنایی ندارید ، پیشنهاد می کنم آموزش مرتبط را بررسی کنید.

حالا کد زیر را در پرونده template_creation.m کپی و جایگذاری کنید و پرونده را در پوشه پروژه (تشخیص شماره پلاک) ذخیره کنید. همه پرونده های مربوط به این پروژه از جمله پرونده های قالب تصویر را می توانید از اینجا بارگیری کنید. همچنین ویدیوی داده شده در پایان این پروژه را نیز بررسی کنید.

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن