تشخیص تابلو های راهنمایی در تصاویر شلوغ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تشخیص تابلو های راهنمایی در تصاویر شلوغ

0 امتیاز

سلام
من الگوریتمی به صورت زیر نوشت اما عکس های شلوغ رو نمیتونه تشخیص بده چیکار کنم؟

  1. فراخوانی تصاویر در نرم افزار MATLAB  و تبدیل تصاویر از حالت رنگی به تصاویر با یک باند خاکستری (grayscale)
  2. استخراج لبه های تصویر ( در اینجا از فیلتر سوبل استفاده شده است.)
  3. تبدیل تصویر لبه ها به تصویر باینری
  4. کاهش نویزها و جزییات کوچک نا مطلوب
  5. تقویت لبه ها با اپراتور dilation
  6. حذف آبجکت های بسیار بزرگ
  7. پر کردن فواصل با اعمال اپراتور closing
  8. انتخاب محل تابلو از بین کاندیداهای موجود
  9. استخراج محل تابلو
    کسی هست راهنمایی کنه؟

 

سوال شده دی 21, 1397  بوسیله ی solyman (امتیاز 14)   1 1

2 پاسخ

+1 امتیاز

سلام.

چند تا نمونه از دیتاست را قرار میداید می شد نظرات دقیق تری داد.در ضمن تصاویر ورودی و خروجی چند تا از مثال ها تون هم قرار بدید. دو روش کلی برای این کار وجود داره

  1.  مهندسی استخراج ویژگی بر عهده خودتون باشه که با تلفیق فیلتر های مختلف همانند کاری که شما انجام دادید البته چراغ هایی چون دارای 3 رنگ مختلفه می تونید تصاویر را به صورت رنگی نیز پردازش کنید و یا نتایج پردازش تصاویر رنگی را با مابقی فیلتر ها ترکیب کنید.
  2.  مهندسی استخراج ویژگی توسط روش های خودکار انجام میشه  که به دو صورت استخراج ویژگی ثابت و دینامیک هستش:
  •  روش های با استخراج ویژگی  ثابت  مثل ویژگی های haar,lbp,hog که شما دیتاستی آماده می کنید و داده ها را آموزش میدید  
  • روش های با استخراج ویژگی دینامیک مثل انواع روش های deep learning که شما با توجه به مسئله مورد نظر می تونید بهترین ساختار را انتخاب کنید.
پاسخ داده شده دی 21, 1397 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
0 امتیاز

ممنون اقا مصطفی من فقط میخوام محل تابلو مشخص بشه همین دسته بندی نمیخوام بکنم


این عکسیه که الگوریتم نمیتونه شناسایی کنه
اینم کد متلبش

%Calling the original image

f = imread('C:\Users\SHAHRIAR\Desktop\dip1.jpg');

 

%Resizing to a desired size

F=imresize(f, [500 NaN]);

figure;imshow(F);title('the original image')

 

%Converting the RGB to Grayscale image

I = rgb2gray(F);

 

%Defining and applying the Sobel filter to extract the edges

horizontal_sobel_mask = fspecial('sobel');

vertical_sobel_mask = horizontal_sobel_mask';

edges = imfilter(I, vertical_sobel_mask, 'replicate');

figure;imshow(edges);title('Edges')

 

%Converting the Grayscale to Binary image

BW_edges = im2bw(edges, 0.99);

figure;imshow(BW_edges);title('Binary edges')

 

%Eliminating the noise and too small details

im1 = bwareaopen(BW_edges,30);

figure;imshow(im1);title('Eliminating Small Detail')

 

%Thickening the edges by dilation

SE1 = ones(3,3);

dilated_edges = imdilate(im1,SE1);

figure;imshow(dilated_edges);title('Dilated edges')

 

%Eliminating very large objects

im2 = dilated_edges - bwareaopen(dilated_edges,1000);

figure;imshow(im2);title('Eliminating Too Large Objects')

 

%Filling the gaps by closing

SE2 = ones(1,50);

im3 = imclose (im2,SE2);

figure;imshow(im3);title('Connecting Neigbor Objects')

 

%Choosing the best candidate for plate region

im4 = bwareaopen(im3,4500,4)-bwareaopen(im3,8500,4);

figure;imshow(im4);title('Choosing The Plate Candidate')

 

%Extracting the plate region

[row,column]=find(im4==1);

[m,n]=size(im4);

a=min(row);b=min(column);c=max(row);d=max(column);

plate_region = F(a:c,b:d,1:3);

figure;imshow(plate_region);title('Plate Region')

 

پاسخ داده شده دی 21, 1397 بوسیله ی solyman (امتیاز 14)   1 1
ویرایش شده دی 21, 1397 بوسیله ی solyman
...