Ali Ismael نشر 10 أكتوبر 2021 أرسل تقرير نشر 10 أكتوبر 2021 ماهو تحويل أوتسو و كيف نقوم باستخدامه لحساب قيمة العتبة للصورة الثنائية؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 10 أكتوبر 2021 أرسل تقرير نشر 10 أكتوبر 2021 (معدل) تحويل أوتسو هو تحويل يستخدم لحساب قيمة العتبة في الصور الثنائية (أبيض أسود) فقط (يمكن استخدامه مع باقي أنواع الصور لكن لن يعطي نتائج جيدة فهو مخصص للتعامل مع حالة الصور الثنائية). في التعتيب_البسيط يتم اختيار عتبة محددة نستنتجها من خلال التجريب أو إذا كنت محترفاً ستستخدم الهيستوغرام الخاص بها لإيجاد العتبة. أما إذا كانت لديك صورة ثنائية (الصورة الثنائية هي الصورة التي تملك قيمتين في هستوغرامها) فسنأخذ قيمة وسطة بين هاتين القيمتين وهذا مايفعله أوتسو. ولتطبيقه نقوم بإضافة "+" الخاصية cv2.THRESH_OTSU إلى الخاصية cv2.THRESH_BINARY مع الدالة cv2.threshold: retValue, thresh=cv2.threshold(source, thresholdValue, maxVal, thresholdingTechnique) # thresholdingTechnique=cv2.THRESH_BINARY + cv2.THRESH_OTSU # maxVal=255 # thresholdValue=0 حيث أننا هنا نقوم بتمرير القيمة 0 إلى الوسيط thresholdValue لكي يقوم أوتسو بإيجاد أفضل قيمة للعتبة (يتم تجاهل هذا الوسيط عموماً). وقيمة العتبة التي يجدها أوتسو هي التي سيتم تطبيقها على الصورة ويتم تخزينها في retValue. في المثال التالي سيكون لدينا صورة تحوي ضجيج سنطبق عليها تعتيب بسيط ثم تعتيب باستخدام أوتسو ثم سنطبق عليها مرشح غاوصي لإزالة الضجيج ثم سنطبق عليها أوتسو مرة أخرى لنرى النتائج: import cv2 from matplotlib import pyplot as plt import numpy as np # قراءة الصورة im = cv2.imread('/content/The-original-Gaussian-noisy-image-The-Gaussian-noise-parameters-are-zero-mean-and.png',0) # global thresholding ret1,th1 = cv2.threshold(im,127,255,cv2.THRESH_BINARY) # Otsu's thresholding ret2,th2 = cv2.threshold(im,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # Otsu's thresholding + Gaussian filtering blur = cv2.GaussianBlur(im,(3,3),0) ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # نقوم الآن برسم النتائج + الهيستوغرامات images = [img, 0, th1,img, 0, th2,blur, 0, th3] # لإعطاء تسميات توضيحية للرسوم titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)', 'Original Noisy Image','Histogram',"Otsu's Thresholding", 'Gaussian filtered Image','Histogram',"Otsu's Thresholding"] for i in range(3): plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray') plt.title(titles[i*3]), plt.xticks([]), plt.yticks([]) plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256) plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([]) plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray') plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([]) fig =plt.gcf() fig.set_size_inches(20.0, 20.0) plt.show() الخرج: تم التعديل في 10 أكتوبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Ali Ismael
ماهو تحويل أوتسو و كيف نقوم باستخدامه لحساب قيمة العتبة للصورة الثنائية؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.