تحول Hough هو تقنية استخراج الميزات في معالجة الصور. تحسب هذه العملية في مساحة المعلمة القيمة القصوى المحلية للنتائج المتراكمة إلى مجموعة تتوافق مع شكل معين كنتيجة لتحويل Hough.
تاريخ التنمية:
اقترحه بول هوغ لأول مرة في عام 1962 للكشف عن الخطوط والمنحنيات المستقيمة.
بترقيته ريتشارد دودا وبيتر هارت في عام 1972 ، توسعت إلى الاعتراف بأشياء من أي شكل.
مبدأ:
يتم تمثيل الخط المستقيم في نظام إحداثيات مستطيلة مثل y = k*x+b ، وفي نظام الإحداثيات القطبية مثل r = x*cos (theta)+y*sin (theta). فكرة تحويل Hough هي أن نقطة في نظام الإحداثيات المستطيلة تتوافق مع خط مستقيم تحت نظام الإحداثيات القطبية ، وبالمثل ، فإن نقطة في نظام الإحداثيات القطبية تتوافق مع خط مستقيم تحت نظام الإحداثيات المستطيلة. في خط مستقيم في نظام الإحداثيات المستطيلة ، يكون المنحدر والاعتراض مؤكدين ، بحيث تركز جميع النقاط على هذا الخط المستقيم عند نقطة في نظام الإحداثيات القطبية ، وتمثل نقطة التركيز هذه الخط المستقيم في نظام الإحداثيات المستطيلة.
بالنسبة للخط المستقيم x = c ، في التطبيقات العملية ، يتم استخدام معادلة المعلمة p = x*cos (theta)+y*sin (theta). وبهذه الطريقة ، تتوافق نقطة على مستوى الصورة مع منحنى على مستوى المعلمة R-Theta ، والباقي هي نفسها.
تحول Hough القياسي:
imgproc.houghlines (صورة حصيرة ، خطوط حصيرة ، rho مزدوجة ، ثيتا مزدوجة ، عتبة int ، SRN مزدوج ، stn مزدوج ، min_theta ، مزدوجة max_theta)
وصف المعلمة:
الصورة: صورة المصدر
الخطوط: يتم تخزين متجه الإخراج للخط المكتشف بعد تحويل Hough
Rho: دقة المسافة بالبكسل
ثيتا: دقة الزاوية في الراديان
العتبة: القيمة التي يجب الوصول إليها عندما يكون الجزء خطًا مستقيمًا
SRN: المسافة المقسمة لمعلمة Rho ، مع قيمة افتراضية من 0
STN: مسافة المقسوم من معلمة Theta ، القيمة الافتراضية 0
min_theta: الحد الأدنى لزاوية الخط المكتشف
max_theta: زاوية الحد الأقصى للخط المكتشف
نموذج الرمز:
public static void main (string [] args) {system.loadlibrary (core.native_library_name) ؛ mat srcimage = imgcodecs.imread ("f: //6597210504144579394.jpg") ؛ mat dstimage = srcimage.clone () ؛ imgproc.canny (srcimage ، dstimage ، 400 ، 500 ، 5 ، false) ؛ تخزين حصيرة = new mat () ؛ imgproc.houghlines (dstimage ، التخزين ، 1 ، Math.PI / 180 ، 200 ، 0 ، 0 ، 0 ، 10) ؛ لـ (int x = 0 ؛ x <storage.rows () ؛ x ++) {double [] vec = storage.get (x ، 0) ؛ double rho = VEC [0] ؛ ثيتا مزدوجة = VEC [1] ؛ Point Pt1 = New Point () ؛ point pt2 = new point () ؛ مضاعفة A = Math.cos (theta) ؛ Double B = Math.sin (theta) ؛ double x0 = a * rho ؛ مزدوج y0 = b * rho ؛ pt1.x = math.round (x0 + 1000 * (-b)) ؛ pt1.y = math.round (y0 + 1000 * (a)) ؛ pt2.x = math.round (x0 - 1000 * (-b)) ؛ pt2.y = math.round (y0 - 1000 * (a)) ؛ if (theta> = 0) {imgproc.line (srcimage ، pt1 ، pt2 ، new scalar (255 ، 255 ، 255 ، 255) ، 1 ، imgproc.line_4 ، 0) ؛ }} imgcodecs.imwrite ("f: //dst2.jpg" ، srcimage) ؛ } احتمالية تراكمية تحول هوغ:
imgproc.houghlinesp (صورة حصيرة ، خطوط حصيرة ، Rho مزدوجة ، ثيتا مزدوجة ، int ،
وصف المعلمة:
الصورة: صورة المصدر
الخطوط: يتم تخزين متجه الإخراج للخط المكتشف بعد تحويل Hough
Rho: دقة المسافة بالبكسل
ثيتا: دقة الزاوية في الراديان
العتبة: القيمة التي يجب الوصول إليها عندما يكون الجزء خطًا مستقيمًا
MininElength: طول الجزء الأدنى من الخط ، افتراضيًا إلى 0
MaxlineGap: الحد الأقصى المسموح به للمسافة المسموح به بتوصيل النقاط بالنقاط على نفس الخط ، الافتراضي هو 0
نموذج الرمز:
public static void main (string [] args) {system.loadlibrary (core.native_library_name) ؛ mat srcimage = imgcodecs.imread ("f: //6597210504144579394.jpg") ؛ mat dstimage = srcimage.clone () ؛ imgproc.canny (srcimage ، dstimage ، 400 ، 500 ، 5 ، false) ؛ تخزين حصيرة = new mat () ؛ imgproc.houghlinesp (dstimage ، التخزين ، 1 ، Math.PI / 180 ، 50 ، 0 ، 0) ؛ لـ (int x = 0 ؛ x <storage.rows () ؛ x ++) {double [] vec = storage.get (x ، 0) ؛ Double X1 = VEC [0] ، y1 = VEC [1] ، x2 = VEC [2] ، y2 = VEC [3] ؛ نقطة البداية = نقطة جديدة (x1 ، y1) ؛ نقطة نهاية = نقطة جديدة (x2 ، y2) ؛ imgproc.line (srcimage ، start ، end ، new alcar (255 ، 255 ، 255 ، 255) ، 1 ، imgproc.line_4 ، 0) ؛ } imgcodecs.imwrite ("f: //dst2.jpg" ، srcimage) ؛ } صورة المصدر:
نتائج تحول Hough القياسية:
نتيجة تحول الاحتمال التراكمي:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.