0

شناسایی خطوط جاده با پایتون

مقدمه

از روش های شناسایی خطوط در تصاویر و ویدیوها در بسیاری از صنایع و کاربردها استفاده می شود. در زیر به برخی از کاربردهای این روش ها اشاره می کنیم:

شناسایی خطوط جاده و مسیرهای اتومبیل:

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

شناسایی خطوط قطعات الکترونیکی:

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

شناسایی خطوط در تصاویر پزشکی:

در حوزه پزشکی، شناسایی خطوط در تصاویر پزشکی مانند سی تی اسکن و رادیوگرافی برای تشخیص بیماری ها و اختلالات اسکلتی-عضلانی و غیره مورد استفاده قرار می گیرد.

شناسایی خطوط در تصاویر هوایی:

در حوزه زمین شناسی و محیط زیست، شناسایی خطوط در تصاویر هوایی مانند شناسایی خطوط آبراهه و خطوط برقی برای برنامه ریزی و مدیریت محیطی مورد استفاده قرار می گیرد.

شناسایی خطوط در تصاویر صنعتی:

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

روش ها

برای شناسایی خطوط در تصاویر در پایتون، از روش های مختلفی استفاده می شود که برخی از آنها عبارتند از:

روش هاف:

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

روش تشخیص لبه:

در این روش، از تشخیص لبه های تصویر با استفاده از فیلترهای مختلفی مانند فیلتر گاوسی و فیلتر سوبل استفاده می شود. سپس با اعمال الگوریتم های خاصی مانند تبدیل هاف، خطوط در تصویر شناسایی می شوند.

روش های مبتنی بر یادگیری عمیق:

این روش ها شامل شبکه های عصبی پیچشی (CNN) و شبکه های عصبی رویانی (RNN) هستند که برای شناسایی خطوط در تصاویر و ویدیوها استفاده می شوند.

کد پایتون

شناسایی خطوط جاده یکی از وظایف متداول در بینایی ماشین است که با استفاده از زبان پایتون و کتابخانه OpenCV قابل دستیابی است. در زیر یک نمونه از چگونگی انجام این کار آمده است:

مرحله اول: وارد کردن کتابخانه های مورد نیاز

import cv2

import numpy as np

مرحله دوم: بارگیری تصویر

img = cv2.imread(‘image.jpg’)

مرحله سوم: تبدیل تصویر به نوع خاکستری

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

مرحله چهارم: اعمال فیلتر گاوسی برای حذف نویز

blur = cv2.GaussianBlur(gray, (5, 5), 0)

مرحله پنجم: اعمال روش تشخیص لبه Canny

edges = cv2.Canny(blur, 50, 150)

مرحله ششم: اعمال یک ماسک برای تمرکز روی منطقه مورد نظر

mask = np.zeros_like(edges)

height, width = img.shape[:2]

polygon = np.array([[(0, height), (width/2, height/2), (width, height)]], np.int32)

cv2.fillPoly(mask, polygon, 255)

masked_edges = cv2.bitwise_and(edges, mask)

مرحله هفتم: اعمال تبدیل هاف برای شناسایی خطوط

lines = cv2.HoughLinesP(masked_edges, 2, np.pi/180, 100, np.array([]), minLineLength=40, maxLineGap=5)

مرحله هشتم: رسم خطوط شناسایی شده بر روی تصویر

line_img = np.zeros((height, width, 3), dtype=np.uint8)

for line in lines:

    x1, y1, x2, y2 = line[0]

    cv2.line(line_img, (x1, y1), (x2, y2), (0, 255, 0), 5)

result = cv2.addWeighted(img, 0.8, line_img, 1, 0)

مرحله آخر: نمایش تصویر نهایی

cv2.imshow(‘result’, result)

cv2.waitKey(0)

cv2.destroyAllWindows()

این کد، خطوط جاده را در تصویر ورودی شناسایی کرده و خطوط سبز رنگ روی آن رسم می کند. می توانید پارامترهای مختلف توابع را تغییر دهید تا نتایج بهتری را در تصاویر مختلف بگیرید.

آموزش کتابخانه Numpy

رایگان
01:04ساعت
254

آموزش کتابخانه Pandas

رایگان
01:20ساعت
193

آموزش کتابخانه Matplotlib

رایگان
01:10ساعت
344
ارسال دیدگاه