💢#Hit_and_Miss Transform
✅ به زبان ساده برای تشخیص شکل یا الگویی خاص بکار میرود.
این تبدیل ، پایه ای از عملیات پیشرفته تر مورفولوژی مانند ریزه کاری یا هرس است.
💢💢💢💢💢💢💢💢💢💢
✅ به زبان ساده برای تشخیص شکل یا الگویی خاص بکار میرود.
این تبدیل ، پایه ای از عملیات پیشرفته تر مورفولوژی مانند ریزه کاری یا هرس است.
💢💢💢💢💢💢💢💢💢💢
python_developer
💢#Hit_and_Miss Transform ✅ به زبان ساده برای تشخیص شکل یا الگویی خاص بکار میرود. این تبدیل ، پایه ای از عملیات پیشرفته تر مورفولوژی مانند ریزه کاری یا هرس است. 💢💢💢💢💢💢💢💢💢💢
💢Hit-or-Miss theory
به نظر من اولین قدم برای درک این قسمت این است که عبارت Hit-or-Miss را درک کنیم:
💢💢💢💢💢💢💢💢💢💢
به نظر من اولین قدم برای درک این قسمت این است که عبارت Hit-or-Miss را درک کنیم:
💢💢💢💢💢💢💢💢💢💢
This media is not supported in your browser
VIEW IN TELEGRAM
✅اپراتورهای مورفولوژی تصاویر را براساس شکل خود پردازش می کنند. این اپراتورها یک یا چند عنصر ساختار را روی تصویر ورودی ، برای به دست آوردن تصویر خروجی اعمال می کنند. دو عملیات اصلی مورفولوژی عبارتند از فرسایش و انبساط. . ترکیبی از این دو عملیات مورفولوژی پیشرفته
مانند opening, closing, or #top-hat را ایجاد می کند.
تبدیل Hit-or-Miss برای یافتن الگوها در تصاویر باینری مفید است.
به طور خاص، آن پیکسلهایی پیدا می کند که همسایگی آن با شکل المان ساختار اولیه B1 مطابقت دارد، در حالی که همزمان با شکل المان ساختار B2 مطابقت ندارد.
➿➿➿➿➿➿➿➿➿➿➿
➰➰➰➰➰➰➰➰➰➰➰
🔴کاربرد🔴
هدف الگوریتم hit-and-miss این است که الگوهای خاصی را در یک تصویر باینری تشخیص دهیم، با استفاده از عنصر ساختاری حاوی 1، 0
مانند opening, closing, or #top-hat را ایجاد می کند.
تبدیل Hit-or-Miss برای یافتن الگوها در تصاویر باینری مفید است.
به طور خاص، آن پیکسلهایی پیدا می کند که همسایگی آن با شکل المان ساختار اولیه B1 مطابقت دارد، در حالی که همزمان با شکل المان ساختار B2 مطابقت ندارد.
➿➿➿➿➿➿➿➿➿➿➿
➰➰➰➰➰➰➰➰➰➰➰
🔴کاربرد🔴
هدف الگوریتم hit-and-miss این است که الگوهای خاصی را در یک تصویر باینری تشخیص دهیم، با استفاده از عنصر ساختاری حاوی 1، 0
✅بنابراین hit-or-miss شامل مراحل زیر است:
1) تصویرA توسط عنصر ساختار B1، ساییده میشود.
2) مکمل تصویرA توسط عنصر ساختار B2، ساییده میشود.
3) نتایج مرحله 1 و مرحله2 and .میشود
عناصر ساختاری B1 و B2 را می توان به یک عنصر B ترکیب کرد. مثال زیر را ببینید:
1) تصویرA توسط عنصر ساختار B1، ساییده میشود.
2) مکمل تصویرA توسط عنصر ساختار B2، ساییده میشود.
3) نتایج مرحله 1 و مرحله2 and .میشود
عناصر ساختاری B1 و B2 را می توان به یک عنصر B ترکیب کرد. مثال زیر را ببینید:
✅در این مورد، ما به دنبال الگوهایی هستیم که پیکسل مرکزی متعلق به پس زمینه باشد در حالی که پیکسل های شمال، جنوب، شرق و غرب متعلق به پیش زمینه یا شی باشد. بقیه پیکسل ها در همسایگی می تواند از هر نوع باشد، ما به آنها اهمیت نمی دهیم. حالا، اجازه دهید این هسته را به یک تصویر ورودی اعمال کنیم:
import cv2 as cv
import numpy as np
input_image = np.array((
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 255, 255, 255, 0, 0, 0, 255],
[0, 255, 255, 255, 0, 0, 0, 0],
[0, 255, 255, 255, 0, 255, 0, 0],
[0, 0, 255, 0, 0, 0, 0, 0],
[0, 0, 255, 0, 0, 255, 255, 0],
[0,255, 0, 255, 0, 0, 255, 0],
[0, 255, 255, 255, 0, 0, 0, 0]), dtype="uint8")
kernel = np.array((
[0, 1, 0],
[1, -1, 1],
[0, 1, 0]), dtype="int")
output_image = cv.morphologyEx(input_image, cv.MORPH_HITMISS, kernel)
rate = 50
kernel = (kernel + 1) * 127
kernel = np.uint8(kernel)
kernel = cv.resize(kernel, None, fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("kernel", kernel)
cv.moveWindow("kernel", 0, 0)
input_image = cv.resize(input_image, None, fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("Original", input_image)
cv.moveWindow("Original", 0, 200)
output_image = cv.resize(output_image, None , fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("Hit or Miss", output_image)
cv.moveWindow("Hit or Miss", 500, 200)
cv.waitKey(0)
cv.destroyAllWindows()
💢💢💢💢💢💢💢💢💢💢
import numpy as np
input_image = np.array((
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 255, 255, 255, 0, 0, 0, 255],
[0, 255, 255, 255, 0, 0, 0, 0],
[0, 255, 255, 255, 0, 255, 0, 0],
[0, 0, 255, 0, 0, 0, 0, 0],
[0, 0, 255, 0, 0, 255, 255, 0],
[0,255, 0, 255, 0, 0, 255, 0],
[0, 255, 255, 255, 0, 0, 0, 0]), dtype="uint8")
kernel = np.array((
[0, 1, 0],
[1, -1, 1],
[0, 1, 0]), dtype="int")
output_image = cv.morphologyEx(input_image, cv.MORPH_HITMISS, kernel)
rate = 50
kernel = (kernel + 1) * 127
kernel = np.uint8(kernel)
kernel = cv.resize(kernel, None, fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("kernel", kernel)
cv.moveWindow("kernel", 0, 0)
input_image = cv.resize(input_image, None, fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("Original", input_image)
cv.moveWindow("Original", 0, 200)
output_image = cv.resize(output_image, None , fx = rate, fy = rate, interpolation = cv.INTER_NEAREST)
cv.imshow("Hit or Miss", output_image)
cv.moveWindow("Hit or Miss", 500, 200)
cv.waitKey(0)
cv.destroyAllWindows()
💢💢💢💢💢💢💢💢💢💢