# 创建转换映射 transfer_map = np.zeros((180, 256), dtype=np.uint8) for src_bin in range(180): source_prob = source_hist[src_bin] cumulative_prob = source_prob target_bin = 0 while cumulative_prob < target_hist[src_bin] and target_bin < 255: target_prob = target_hist[target_bin] cumulative_prob += target_prob target_bin += 1 transfer_map[src_bin] = target_bin
时间: 2024-04-28 09:25:57 浏览: 195
这段代码用于计算直方图规定化时的灰度值映射表。具体来说,该代码首先创建了一个大小为(180,256)的、数据类型为np.uint8的、元素都为0的二维数组transfer_map,用于存储灰度值映射表。
接着,代码通过循环遍历输入图像的灰度直方图source_hist的每一个角度bin,将该bin的概率值source_prob存储到source_prob变量中,并初始化累计概率值cumulative_prob为source_prob。然后,代码循环遍历输出图像的灰度值0~255,将该灰度值对应的输出图像概率值与累计概率值进行比较,直到找到一个输出图像灰度值所对应的概率值大于或等于累计概率值的灰度值。然后,将该输出图像灰度值存储到transfer_map中,该灰度值与输入图像灰度直方图中的该角度bin所对应的灰度值进行映射。最后,代码将该角度bin的累计概率值更新为累计概率值加上target_prob,继续计算下一个角度bin的灰度值映射表,直到完成整个计算过程。
该代码的主要区别在于计算累计概率值的来源不同,直方图均衡化时的累计概率值来源于前一个灰度值的累计概率值,而直方图规定化时的累计概率值来源于目标直方图的概率值。
相关问题
disparity=np.zeros((size1,size2), dtype=np.uint8) #error_energy e=np.zeros_like(disparity) e_avg=np.ones_like(disparity) e_avg=e_avg*100000
这段代码创建了一个大小为(size1, size2)的用于存储视差值的数组disparity,数据类型为uint8。同时,创建了一个与disparity相同大小和数据类型的用于存储能量值的数组e,并将其所有元素初始化为0。另外,创建了一个与disparity相同大小和数据类型的用于存储平均能量值的数组e_avg,并将其所有元素初始化为100000。
bin_img = np.zeros(shape=timg.shape, dtype=np.uint8)
这段代码的作用是创建一个与`timg`具有相同形状和数据类型的全零数组`bin_img`。`shape`参数指定了数组的形状,`dtype`参数指定了数组元素的数据类型。在这里,`np.uint8`表示无符号8位整数,即像素值范围在0到255之间。通常,这个数组会被用来存储二值化后的图像,其中像素值为0或255。
阅读全文