python_developer
1.54K subscribers
3.74K photos
1.97K videos
232 files
434 links
کانال اموزش پایتون @Real_developer
تبلیغات پذیرفته میشود.
Download Telegram
الگوریتم Hit-and-miss می تواند به
شکل #thin و skeletonize# کردن یک تصویر باینری استفاده شود.
این یک فرآیند تکراری است که حاوی مراحل مکرر است تا شکل را با
روش hit-and-missنازک کند.
در هر تکرار، بعضی از عناصر ساختاری مختلف برای شناسایی پیکسل های لبه ای که باید حذف شوند استفاده می شود و تا به شکل اسکلت نازک شده در بیاید.

💢💢💢💢💢💢💢💢💢💢
هنگامی که یک se بر روی یک تصویر باینری قرار می گیرد،
هر پیکسل آن با پیکسل مربوطه زیر عنصر ساختار مرتبط است.
به عنصر ساختار fit تصویر گفته میشود، اگر به ازای هر پیکسل ست شده با 1، پیکسل تصویر مربوطه هم 1 باشد(عمل AND).
به طور مشابه، به عنصر ساختارhit گفته می شود ، اگر حداقل برای یکی از پیکسل های ست شده به 1 ، پیکسل تصویر مربوطه نیز 1 باشد.(عمل OR)
💢💢
تبدیل hit and miss، اجازه می دهد اطلاعاتی مبنی بر اینکه چگونه اشیاء در یک تصویر باینری، با محیط اطرافشان در ارتباط هستند ،بدست آوریم.
این عملیات نیاز به یک جفت سازگار از عناصر ساختاری {s1، s2} دارد

💢💢💢💢💢💢💢💢💢💢
💢5. Morphological Gradient💢
تفاضل بین فرسایش و انبساط حاصل از یک تصویر Gradient گویند.
برای تشخیص مرز شی مفید است.

💢💢💢💢💢💢💢💢💢💢
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
💢6. Top Hat💢
تفاضل بین تصویر اصلی و Opening را گویند.
کاربرد:
1) استخراج ویژگی 2) افزایش کیفیت عکس
3) ...

💢💢💢💢💢💢💢💢💢💢
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
💢💢💢💢💢💢💢💢💢💢
Live stream started
Live stream finished (41 seconds)
This media is not supported in your browser
VIEW IN TELEGRAM
Top Hat
💢7. Black Hat💢

تفاضل بین تصویر اصلی و closing را گویند.
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
تا اینجا se های ایجاد شده به شکل مربع یا مستطیل بودند. برای ایجاد se هایی به شکل بیضی یا دایره ، در opencv توسط تابع cv2.getStructuringElement ()به صورت زیر عمل میکنیم:
# Rectangular Kernel
>>> cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]], dtype=uint8)

# Elliptical Kernel
>>> cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
array([[0, 0, 1, 0, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 1, 0, 0]], dtype=uint8)

# Cross-shaped Kernel
>>> cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
array([[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[1, 1, 1, 1, 1],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]], dtype=uint8)
💢💢💢💢💢💢💢💢💢💢