ฉันต้องการค้นหาเส้นแบ่งระหว่างสีฟ้าและเทาในภาพต่อไปนี้:
ยิ่งไปกว่านั้นจุดสิ้นสุดของบรรทัดนั้น
Hough เปลี่ยนเป็นตัวเลือกหรือไม่? ถ้าใช่ฉันจะตั้งค่ารูปภาพก่อนใช้ Hough ได้อย่างไร
วิธีแก้ปัญหานี้จะเป็นประโยชน์
ฉันต้องการค้นหาเส้นแบ่งระหว่างสีฟ้าและเทาในภาพต่อไปนี้:
ยิ่งไปกว่านั้นจุดสิ้นสุดของบรรทัดนั้น
Hough เปลี่ยนเป็นตัวเลือกหรือไม่? ถ้าใช่ฉันจะตั้งค่ารูปภาพก่อนใช้ Hough ได้อย่างไร
วิธีแก้ปัญหานี้จะเป็นประโยชน์
คำตอบ:
โดยทั่วไปคุณต้องการตัวตรวจจับขอบเช่นตัวตรวจจับขอบ Canny สำหรับปัญหาชนิดนี้ การแปลงแบบ Hough มีประโยชน์สำหรับการแยกบรรทัดแทนที่จะเป็นขอบ
อย่างไรก็ตามในกรณีเฉพาะนี้คุณควรทำสิ่งต่อไปนี้:
imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);
เนื่องจากมันเป็นภาพที่เรียบง่าย
สำหรับรูปภาพนี้เคอร์เนล convolution อย่างเช่นต่อไปนี้จะพบกับขอบอย่างชัดเจน:
[-1 2 - 1]
นี่จะให้พิกเซลขอบเดียวที่จุดขอบแต่ละจุด ไม่มีความยุ่งยากไม่มีความวุ่นวาย Canny เกี่ยวข้องกับปัญหานี้มากเกินไป หากคุณต้องการหาจุดขอบของเส้นในทุกมุมคุณสามารถใช้ Laplacian, Laplacian of Gaussian (LoG) หรือความแตกต่างของ Gaussian (DoG) แบบง่าย Sobel และ Prewitt นั้นเรียบง่าย แต่ไม่เหมาะสมเนื่องจากให้เส้นที่มีความหนาเป็นสองเท่า
มีการใช้งาน Hough อย่างรวดเร็วที่อธิบายไว้ที่นี่: http://www.ic.uff.br/~laffernandes/projects/kht/index.html
นอกจากนี้ยังมี "อัลกอริธึม Hough แบบไม่มีพารามิเตอร์" ที่รวดเร็วมาก แต่ค่อนข้างยุ่งยากในการติดตั้งและดีบัก