ฉันมีรูปร่างตามอำเภอใจซึ่งกำหนดโดยรูปแบบไบนารี (สีเทา = รูปร่าง, สีดำ = พื้นหลัง)
ฉันต้องการค้นหาสี่เหลี่ยมที่มีขนาดใหญ่ที่สุดที่มีพิกเซลสีเทาเท่านั้น (สี่เหลี่ยมนั้นเป็นภาพสีเหลือง):
รูปร่างนั้นเป็น "ชิ้นเดียว" เสมอ แต่ไม่จำเป็นต้องนูน (ไม่ใช่ทุกจุดคู่บนขอบเขตของรูปร่างที่สามารถเชื่อมต่อกันด้วยเส้นตรงที่วิ่งผ่านรูปร่าง)
บางครั้งมี "สี่เหลี่ยมจัตุรัสสูงสุด" อยู่จำนวนมากจากนั้นจึงสามารถนำข้อ จำกัด เพิ่มเติมมาใช้เช่น:
- การใช้รูปสี่เหลี่ยมผืนผ้าโดยมีจุดศูนย์กลางอยู่ใกล้กับจุดศูนย์กลางมวลของรูปร่าง (หรือศูนย์กลางของภาพ)
- การใช้สี่เหลี่ยมที่มีอัตราส่วนกว้างยาวที่สุดใกล้กับอัตราส่วนที่กำหนดไว้ล่วงหน้า (เช่น 4: 3)
ความคิดแรกของฉันเกี่ยวกับอัลกอริทึมคือ:
- คำนวณการแปลงระยะทางของรูปร่างและค้นหาจุดศูนย์กลางมวล
- ขยายพื้นที่สี่เหลี่ยมในขณะที่มีพิกเซลของรูปร่างเท่านั้น
- ขยายสี่เหลี่ยม (แต่เดิมเป็นสี่เหลี่ยม) ในความกว้างหรือความสูงในขณะที่มันมีพิกเซลของรูปร่างเท่านั้น
อย่างไรก็ตามฉันคิดว่าอัลกอริทึมดังกล่าวจะช้าและจะไม่นำไปสู่ทางออกที่ดีที่สุด
ข้อเสนอแนะใด ๆ