大同网站建设设计,小程序开发需要什么软件,在线观看免费网站,云空间这里写目录标题局部直方图处理局部直方图处理
因为像素是由基于整个图像的灰度的变换函数修改的。这种全局性方法适合于整体增强#xff0c;但当目的是增强图像中几个小区域的细节时#xff0c;通常就会失败。这是因为在这些小区域中#xff0c;像素的数量对计算全局变换的…
这里写目录标题局部直方图处理局部直方图处理
因为像素是由基于整个图像的灰度的变换函数修改的。这种全局性方法适合于整体增强但当目的是增强图像中几个小区域的细节时通常就会失败。这是因为在这些小区域中像素的数量对计算全局变换的影响可以忽略。解决方法是设计基于像素邻域的灰度分布的变换函数。
# opencv实现的局部直方图处理
img_ori cv2.imread(DIP_Figures/DIP3E_Original_Images_CH03/Fig0326(a)(embedded_square_noisy_512).tif, 0)
img_transform, _ my_calhist(img_ori)
# img_transform cv2.equalizeHist(img_ori)plt.figure(figsize(15, 6))
plt.subplot(1, 3, 1), plt.imshow(img_ori, cmapgray, vmin0, vmax255), plt.title(Original)
plt.subplot(1, 3, 2), plt.imshow(img_transform, cmapgray, vmin0, vmax255), plt.title(fGlobal Equalize Hist)clahe cv2.createCLAHE(clipLimit255, tileGridSize(3, 3))
img_transform clahe.apply(img_ori)plt.subplot(1, 3, 3), plt.imshow(img_transform, cmapgray, vmin0, vmax255), plt.title(fLocal Equalize Hist)
plt.tight_layout()
plt.show()def my_calhist_local(img):histogram equalizationparam: input img: uint8[0, 255] grayscale imagereturn uint8[0, 255] grayscale image after histogram equalization
# hist, bins my_hist(img, bins256, normalizedTrue) #局部直方图的时候这个比较慢改为了下面的Numpy效果快好多hist, bins np.histogram(img, bins256, range[0, 256], densityTrue)#--------------------------------Numpy-------------------hist_cumsum np.round(np.cumsum(hist) * 255).astype(int)img_dst hist_cumsum[img]return img_dstdef local_calhist(img_ori, grid_size(3, 3)):Local histogram equalizationparam: input img_ori: input uint8[0, 255] grayscale imageparam: input grid_size: grid size of the local hist, size need to be uneven number like 1, 3, 5return local histogram equalization of image uint8[0, 255]height, width img_ori.shapeimg_dst img_ori.copy()m grid_size[0]n grid_size[1]padding_h int((m - 1) / 2)padding_w int((n - 1) / 2)img_pad np.pad(img_ori.copy(), (padding_h, padding_w), modeconstant, constant_values0)for h in range(padding_h, height padding_h):for w in range(padding_w, width padding_w):temp my_calhist_local(img_pad[h-padding_h:hpadding_h1, w-padding_w:wpadding_w1])img_dst[h:h1, w:w1] temp[padding_h, padding_w]return img_dst# Numpy实现的局部直方图处理效果比opencv好
img_ori cv2.imread(DIP_Figures/DIP3E_Original_Images_CH03/Fig0326(a)(embedded_square_noisy_512).tif, 0)# global histogram equalization
img_global my_calhist_local(img_ori)# local histogram equalization
img_local local_calhist(img_ori, grid_size(3, 3))plt.figure(figsize(15, 6))
plt.subplot(1, 3, 1), plt.imshow(img_ori, cmapgray, vmin0, vmax255), plt.title(Original)
plt.subplot(1, 3, 2), plt.imshow(img_global, cmapgray, vmin0, vmax255), plt.title(fGlobal Equalize Hist)
plt.subplot(1, 3, 3), plt.imshow(img_local, cmapgray, vmin0, vmax255), plt.title(fLocal Equalize Hist)
plt.tight_layout()
plt.show()