เหตุใดเอาต์พุต ARSCNView.snapshot() จึงแตกต่างจาก ARFrame.capturedImage

ฉันสร้างมุมมองที่มีมุมมองรูปภาพทั้งสองแบบเคียงข้างกันเพื่อเปรียบเทียบทั้งสอง

ด้านซ้ายมาจาก ARFrame.capturedImage

ด้านขวามาจาก ARSCNView.snapshot()

คุณจะเห็นว่าด้านซ้ายสว่างกว่าด้านขวาเล็กน้อย แม้ว่าฉันจะเล็งกล้องไปที่ผนังสีขาวก็ตาม

กำแพงสีขาว

ฉันต้องการทั้งสองฟังก์ชันเพื่อส่งคืนค่าพิกเซลเดียวกันสำหรับวัตถุเดียวกัน เพื่อที่ฉันจะสามารถคัดลอกทับพิกเซลบางจุดได้ในภายหลังโดยไม่แสดงรูปทรงที่ชัดเจนเนื่องจากความสว่างที่แตกต่างกัน

อาจเป็นเพราะว่าฉันแปลง CVPixelFrameBuffer เป็น UIImage ได้อย่างไร


person Mastergalen    schedule 23.09.2018    source แหล่งที่มา
comment
ฉันไม่คิดว่าความสว่างเป็นปัญหา ลองดูริ้วรอยด้านล่างให้ละเอียดยิ่งขึ้น ซึ่งเป็นภาพที่แตกต่างกัน ฉันคิดว่าอันที่ถูกต้องถูกซูม   -  person sj-r    schedule 24.09.2018
comment
@ sj-r ฉันได้แทนที่รูปภาพด้วยกล้องที่ชี้ไปที่ผนังสีขาว รอยย่นที่ไม่ตรงแนวอาจเกิดจากการจับภาพความล่าช้าระหว่างสองภาพ   -  person Mastergalen    schedule 24.09.2018
comment
ฉันเชื่อว่าสาเหตุเป็นเพราะ ARKit ใช้แกมม่า sRGB ในขณะที่ SceneKit ใช้ sRGB เชิงเส้น stackoverflow.com/questions/44033605/ อย่างไรก็ตาม ดูเหมือนว่าจะไม่มีวิธีที่รวดเร็วในการแปลงโดยไม่ต้องเจาะลึกลงในโค้ดเชเดอร์   -  person Mastergalen    schedule 25.09.2018
comment
ไม่เป็นไร ฉันใช้การแปลงแล้วแต่ยังคงปิดอยู่ :(   -  person Mastergalen    schedule 25.09.2018