งานของคุณคือการเขียนโปรแกรมที่ถ่ายภาพอินพุทและเรียกใช้งานผ่านการตรวจจับขอบเพื่อให้ได้ภาพออกมา
การตรวจจับขอบทำงานดังต่อไปนี้ (หากไม่ชัดเจนโปรดดูการตรวจจับขอบ sobel ):
- ค่าสำหรับพิกเซลคือความสว่างทั้งหมดของพิกเซลดังนั้นหากเป็นสีคุณจะต้องแปลงเป็นสีเทาก่อน (เพื่อให้สิ่งต่าง ๆ เรียบง่ายและเล่นกอล์ฟได้คุณสามารถใช้ค่าเฉลี่ยสำหรับ R, G และ B)
- สูตรสำหรับ G xและ G yสำหรับพิกเซล p (i, j)คือ:
- G x = -1 * p (i-1, j-1) - 2 * p (i-1, j) - 1 * p (i-1, j + 1) + 1 * p (i + 1, j -1) + 2 * p (i + 1, j) + 1 * p (i + 1, j + 1)
- G y = -1 * p (i-1, j-1) - 2 * p (i, j-1) - 1 * p (i + 1, j-1) + 1 * p (i-1, j +1) + 2 * p (i, j + 1) + 1 * p (i + 1, j + 1)
- ค่าของขนาดของขอบที่พิกเซลนั้นคือ: √ (G x 2 + G y 2 )
ภาพที่ส่งออกสำหรับแต่ละพิกเซลขนาดของขอบ√ (G x 2 + G y 2 ) เป็นเฉดสีเทา
โบนัส:
- ทำการเบลอเกาส์เพื่อทำให้ภาพราบรื่นขึ้นก่อนที่จะทำการตรวจจับขอบเพื่อไม่ให้ขอบเล็กลง สิ่งนี้ให้โบนัส -30% ในผลลัพธ์สุดท้าย
- พิจารณามุมของขอบในบัญชี คุณให้พิกเซลเอาต์พุตบางสีโดยใช้ค่าเฉดสีเทาเท่ากันและเพิ่มสีจากวงล้อสีโดยใช้มุมที่ได้จากสูตรอาร์คตัน (G y / G x ) สิ่งนี้จะให้โบนัสเพิ่มอีก -30% จากผลลัพธ์สุดท้าย
กฎ:
- คุณอาจละเว้นค่าสำหรับ edgepixels และตั้งค่าเป็นสีดำหรือคุณอาจใช้ 0 สำหรับพิกเซลใด ๆ ที่อยู่นอกภาพ
- รูปภาพ ouput ของคุณต้องอยู่ในรูปแบบภาพที่สามารถเปิดได้ในคอมพิวเตอร์ส่วนใหญ่
- เอาต์พุตต้องถูกเขียนไปยังดิสก์หรือสามารถไพพ์ไปยังไฟล์ได้
- อินพุตถูกกำหนดเป็นอาร์กิวเมนต์ commandline ในรูปแบบของพา ธ ที่สัมพันธ์กับรูปภาพหรือไพพ์จาก commandline
- นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!