基于BGR格式B通道计算水下图像亮度为何准确率优异?
问题解析:误取BGR-B通道替代LAB-L通道的异常现象
- 原本计划用均值法判断图像明暗,操作失误:未将BGR图像转换为LAB格式提取L通道,直接拆分BGR图像取了B通道
- 测试标注的水下图像时,该方法的准确率、召回率、精准度均表现优异
- 显示提取的B通道图像时呈现灰度图(原本以为会偏蓝),但查阅资料得知计算图像亮度通常需取全通道均值,因此产生两点疑问:
- 为什么单独显示B通道是灰度图?
- 为什么误取B通道在水下图像上效果这么好?
复现代码
img = cv2.imread("image.jpg") # conv_image = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) l_channel, _, _ = cv2.split(img) img = l_channel cv2.imshow("Result", img) cv2.waitKey(0) cv2.destroyAllWindows()
疑问解答
为什么B通道显示为灰度图?
OpenCV的cv2.imshow处理单通道图像时,会直接将每个像素的数值当作灰度值进行渲染,不会保留原通道的色彩属性。如果想要看到偏蓝的效果,需要将B通道作为三通道图像的蓝色通道,另外两个通道填充0后再显示。为什么误取B通道在水下图像上效果优异?
水下环境的光线特性决定了:水对红光的吸收能力强,对蓝光的穿透性最好,因此水下图像的B通道本身就携带了更多的场景亮度信息,和LAB色彩空间中专门的L通道(亮度通道)在水下场景下具有很高的相关性。用B通道均值判断明暗,刚好契合水下图像的亮度分布规律,所以在标注的水下数据集上表现出色。但这种方法局限性很强,换做陆地正常光照等其他场景,B通道均值和实际亮度的相关性会大幅降低,远不如LAB-L通道的通用性强。
内容的提问来源于stack exchange,提问作者file_csv
相关产品推荐
相关产品推荐

