بهینه سازی مقدار thresholdهای لبه یاب کنی در پایتون
لبه یاب کنی که با کمک open-cv در پایتون قابل محاسبه است دو مقدار threshold دریافت میکند که این مقدارها مهمترین پارامتری است که میتواند لبه یابی canny را تحت تاثیر قرار دهد. در این نوشته به روش بهینه سازی این مقدار میپردازیم تا مقدار ثابت در این پارامترها قرار ندهید تا یک مقدار بهینه برای این توابع استفاده کنید.
بهینه سازی مقدار thresholdهای لبه یاب کنی در پایتون
در رویکردی که در این نوشته در مورد آن صحبت میکنیم میانگین شدت تصویر را به عنوان thresholdهای لبه یاب canny استفاده میکنیم.
import cv2
import numpy as np
def rgb2gray_regular(image):
grayscale_image = (
0.2989 * image[..., 0] + 0.5870 * image[..., 1] + 0.1140 * image[..., 2]
)
grayscale_image = np.clip(grayscale_image, 0, 255)
return grayscale_image.astype(np.uint8)
def canny_edge_detection(image, sigma=0.33):
gray = rgb2gray_regular(image)
v = np.median(gray)
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))
return cv2.Canny(gray, lower, upper)
اگر سوالی در ارتباط با کد بالا دارید در بخش نظرات این نوشته بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]



















میشه این روش رو با adaptive threshold ترکیب کرد؟
بله، ترکیب این روش با adaptive threshold میتواند نتایج جالبی به همراه داشته باشد، اما نیاز به بررسی و تنظیم دقیق پارامترها دارد.
میشه threshold رو بصورت خودکار برای دستهای از تصاویر تنظیم کرد؟
بله، امکان تنظیم خودکار threshold برای دستهای از تصاویر وجود دارد. میتوان با استفاده از روشهای آماری یا الگوریتمهای یادگیری ماشین، مقادیر بهینه را برای مجموعه تصاویر پیدا کرد.
این تابع cv2.Canny خیلی سریع هست یا نیاز به بهینهسازی بیشتر داره؟
سلام، تابع cv2.Canny به طور کلی بسیار بهینه و سریع است و برای اکثر کاربردها نیازی به بهینهسازی بیشتر ندارد.
این روش با تصاویر رنگی خیلی بزرگ هم بهینه عمل می کنه؟
این روش برای تصاویر رنگی بزرگ هم بهینه عمل میکند، اما برای تصاویر بسیار حجیم ممکن است نیاز به بهینهسازیهای بیشتری باشد.
مقدار sigma چقدر روی نتیجه نهایی تاثیر داره؟
سلام، مقدار سیگما تعیین کننده نسبت بین threshold پایین و بالای الگوریتم کنی است و هرچه این نسبت بزرگتر باشد، لبههای بیشتری شناسایی میشوند.