 |
หลายๆท่านอาจจะคำนวณจากการหาความสัมพันธ์โดยตรงจากสูตรพื้นที่วงกลมหรือสี่เหลี่ยม แต่ผมอยากจะเสนออีกวิธีหนึ่งที่เป็นการคำนวณแบบหยาบๆ
จากรูปเราอาจประมาณได้ว่า (พื้นที่ที่ต้องการ / พื้นที่สี่เหลี่ยม(หนึ่งหน่วย) ) มีค่าประมาณ (จำนวนจุดในพื้นที่ที่ต้องการ / จำนวนจุดในพื้นที่สี่เหลี่ยม)
ดังนั้น พื้นที่ที่ต้องการ มีค่าประมาณ (จำนวนจุดในพื้นที่ที่ต้องการ / จำนวนจุดในพื้นที่สี่เหลี่ยม)
การหาจุดในพื้นที่ที่ต้องการนั้นก็เพียงนับจุดที่มีสีตรงกับสีที่ถูกทาไว้
ด้านล่างนี้เป็น Mathematica codes ที่ผมใช้ในการคำนวณครับ
โหลดภาพจากpantip.com pic= Import[http://www.pantip.com/cafe/wahkor/topic/X10848195/X10848195-0.jpg];
crop เอาส่วนขอบออกโดยภาพที่ได้จะมีขนาด 380x380 croppic=ImageCrop[pic,{380,380}];
ดังนั้นจำนวนจุดทั้งหมดในสี่เหลี่ยมเท่ากับ 380^2 coorls =Table[{i, j}, {i, 1, 380}, {j, 1, 380}] // Flatten[#, 1] &;
จำนวนจุดที่อยู่ในพื้นที่ที่ต้องการก็คือจุดที่มีสี RGB เท่ากับ 0-0-254 ninside = Select[ImageValue[pic2, #, "Byte"] & /@ coorls, # =={ 0,0,254} &] // Length;
แต่ยังมีจุดที่อยู่บนขอบอีก nedge=Select[ImageValue[pic2, #, "Byte"] & /@ coorls, # != {0, 0, 254} && # != {0, 0, 0} &] // Length;
ผมประมาณเอาว่าจุดที่เป็นขอบนี้เป็นส่วนของพื้นที่ที่ต้องการประมาณ 20% ดังนั้น พื้นที่ที่ต้องการประมาณ
(ninside + 0.2*nedge)/Length@coorls 0.146298
จากคุณ |
:
Santi
|
เขียนเมื่อ |
:
24 ก.ค. 54 12:14:58
A:61.90.44.36 X: TicketID:044871
|
|
|
|
 |