مقدمه
از روش های شناسایی خطوط در تصاویر و ویدیوها در بسیاری از صنایع و کاربردها استفاده می شود. در زیر به برخی از کاربردهای این روش ها اشاره می کنیم:
شناسایی خطوط جاده و مسیرهای اتومبیل:
در حوزه خودرو، شناسایی خطوط در تصاویر و ویدیوهایی که توسط دوربین های ماشین گرفته می شوند، برای شناسایی مسیر جاده و انجام خودکار کنترل خودرو بسیار مهم است.
شناسایی خطوط قطعات الکترونیکی:
در صنعت الکترونیک، از این روش برای شناسایی خطوط بر روی قطعات الکترونیکی استفاده می شود تا بتوان آنها را به صورت دقیق و بهینه طراحی کرد.
شناسایی خطوط در تصاویر پزشکی:
در حوزه پزشکی، شناسایی خطوط در تصاویر پزشکی مانند سی تی اسکن و رادیوگرافی برای تشخیص بیماری ها و اختلالات اسکلتی-عضلانی و غیره مورد استفاده قرار می گیرد.
شناسایی خطوط در تصاویر هوایی:
در حوزه زمین شناسی و محیط زیست، شناسایی خطوط در تصاویر هوایی مانند شناسایی خطوط آبراهه و خطوط برقی برای برنامه ریزی و مدیریت محیطی مورد استفاده قرار می گیرد.
شناسایی خطوط در تصاویر صنعتی:
در صنایع مختلف از جمله صنایع فولادی، معدنی و سایر صنایع، شناسایی خطوط در تصاویر و ویدیوهای صنعتی مورد استفاده قرار می گیرد تا بتوان به صورت دقیق خطوط را ردیابی کرد و درک بهتری از فرآیندهای صنعتی داشت.
روش ها
برای شناسایی خطوط در تصاویر در پایتون، از روش های مختلفی استفاده می شود که برخی از آنها عبارتند از:
روش هاف:
این روش برای شناسایی خطوط و اشیا با شکل های مختلف استفاده می شود. در این روش، ابتدا تصویر ورودی به صورت خاکستری تبدیل می شود، سپس با استفاده از تبدیل هاف، خطوط و شکل های مختلف در تصویر شناسایی می شوند.
روش تشخیص لبه:
در این روش، از تشخیص لبه های تصویر با استفاده از فیلترهای مختلفی مانند فیلتر گاوسی و فیلتر سوبل استفاده می شود. سپس با اعمال الگوریتم های خاصی مانند تبدیل هاف، خطوط در تصویر شناسایی می شوند.
روش های مبتنی بر یادگیری عمیق:
این روش ها شامل شبکه های عصبی پیچشی (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()
این کد، خطوط جاده را در تصویر ورودی شناسایی کرده و خطوط سبز رنگ روی آن رسم می کند. می توانید پارامترهای مختلف توابع را تغییر دهید تا نتایج بهتری را در تصاویر مختلف بگیرید.
برای نوشتن دیدگاه باید وارد بشوید.