บทนำ
ขอบที่คมชัดตรงไปตรงมาก็แค่อันตรายธรรมดา ๆ ซึ่งกำหนดให้ PNG เป็นอินพุททำให้ภาพเบลอโดยใช้วิธีการที่อธิบายไว้ด้านล่างและทื่อขอบคมที่สาปแช่งเหล่านั้น
วิธี
ในการรับค่า RGB ของแต่ละพิกเซลให้ใช้สมการสามข้อต่อไปนี้:
โดยที่คือผลรวมของค่าสีแดงของแต่ละพิกเซลที่อยู่ติดกันยกกำลังสอง ค่าของคือจำนวนของพิกเซลที่อยู่ติดกัน (เช่นพิกเซลมุมจะมีค่าเป็น3 ในขณะที่พิกเซลรอบจุดศูนย์กลางของภาพจะมีค่า 8)
พิกเซลที่อยู่ติดกันคือพิกเซลซึ่งอยู่ห่างจากพิกเซลดั้งเดิม 1 พิกเซลในทุกทิศทาง (ซ้าย, ขวา, ขึ้น, ลงและบนทุกเส้นทแยงมุม)
ตัวอย่างเช่นในรูปภาพ 3 x 1 ต่อไปนี้:
ค่า RGB เบลอของพิกเซลกลางจะเป็นดังนี้:
โดยที่ทศนิยมใด ๆ ถูกปัดเศษเป็นหน่วยที่ใกล้ที่สุด คุณไม่ควรเพียงวางผลลัพธ์
ดังนั้นพิกเซลกลางจะเป็นสี (0, 221, 221) หรือ:
ส่งผลให้ภาพ:
คุณควรทำขั้นตอนนี้ซ้ำสำหรับทุกพิกเซลในภาพ (โปรดทราบว่าคุณทำเช่นนี้ด้วยพิกเซลดั้งเดิมไม่ใช่พิกเซลที่แก้ไขแล้วโดยทั่วไปคุณไม่ควรเขียนทับภาพต้นฉบับและควรแยกมันออกจากรูปภาพใหม่ที่เบลออย่างสมบูรณ์โดยสิ้นเชิง )
หากคุณคำนวณค่าใด ๆ ที่จะมากกว่า 255 สมมติว่าค่าของมันคือ 255 (Ie ค่า 374 จะถูกตั้งค่าเป็น 255)
ผลลัพธ์ที่ได้ควรเป็นภาพ PNG แยกต่างหาก (คุณอาจตั้งชื่อสิ่งนี้ตามที่คุณต้องการ)
ตัวอย่าง
ซูเปอร์มาริโอ
เดิม:
เบลอ:
กระดานหมากรุก
เดิม:
เบลอ:
มันฝรั่งทอดกรอบ
เป็นต้นฉบับ
เบลอ
ไม่กรอบอีกต่อไป
โกธิคอเมริกัน
เดิม:
เบลอ:
หากต้องการดูภาพเบลอในภาพขนาดใหญ่ขอแนะนำให้รันโปรแกรมอีกครั้งบนภาพเบลอ:
ท้าทาย
รหัสที่สั้นที่สุดในการทำให้ภาพ PNG ที่ได้มานั้นพร่ามัว
คุณสามารถใช้ไลบรารีการประมวลผลภาพ (เช่น PIL) แต่คุณต้องไม่ใช้ฟังก์ชั่นการเบลอในตัว (Mathematica ฉันกำลังมองคุณอยู่)
บันทึก
ดังที่ @ orlp กล่าวไว้ด้านล่าง:
สำหรับบันทึก (ความรู้ของฉัน) นี่ไม่ใช่วิธีการเบลอมาตรฐาน ความท้าทายนี้ไม่ใช่ทรัพยากรทางการศึกษา
n
ควรปรากฏในตัวส่วน