Почему вывод 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