失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python库skimage 绘制直方图;绘制累计直方图;实现直方图匹配(histogram matching)

python库skimage 绘制直方图;绘制累计直方图;实现直方图匹配(histogram matching)

时间:2021-12-07 04:32:29

相关推荐

python库skimage 绘制直方图;绘制累计直方图;实现直方图匹配(histogram matching)

绘制直方图

from skimage import exposure# 绘制彩色图像的c通道的直方图img_hist, bins = exposure.histogram(img[..., c], source_range='dtype')# 以第c行第i列的形式绘制归一化直方图axes[c, i].plot(bins, img_hist / img_hist.max())

绘制累积直方图

from skimage import exposureimg_cdf, bins = exposure.cumulative_distribution(img[..., c])axes[c, i].plot(bins, img_cdf)

直方图匹配(histogram matching)

含义:使源图像的累积直方图和目标图像一致

from skimage.exposure import match_histograms# 参数1:源图像;参数2:目标图像;参数3:多通道匹配matched = match_histograms(image, reference, multichannel=True)

实验:直方图匹配效果

"""==================Histogram matching==================This example demonstrates the feature of histogram matching. It manipulates thepixels of an input image so that its histogram matches the histogram of thereference image. If the images have multiple channels, the matching is doneindependently for each channel, as long as the number of channels is equal inthe input image and the reference.2Histogram matching can be used as a lightweight normalisation for imageprocessing, such as feature matching, especially in circumstances where theimages have been taken from different sources or in different conditions (i.e.lighting)."""import matplotlib.pyplot as pltfrom skimage import datafrom skimage import exposurefrom skimage.exposure import match_histogramsreference = data.coffee()image = data.chelsea()matched = match_histograms(image, reference, multichannel=True)fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(8, 3),sharex=True, sharey=True)for aa in (ax1, ax2, ax3):aa.set_axis_off()ax1.imshow(image)ax1.set_title('Source')ax2.imshow(reference)ax2.set_title('Reference')ax3.imshow(matched)ax3.set_title('Matched')plt.tight_layout()plt.show()####################################################################### To illustrate the effect of the histogram matching, we plot for each# RGB channel, the histogram and the cumulative histogram. Clearly,# the matched image has the same cumulative histogram as the reference# image for each channel.fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(8, 8))for i, img in enumerate((image, reference, matched)):for c, c_color in enumerate(('red', 'green', 'blue')):img_hist, bins = exposure.histogram(img[..., c], source_range='dtype')axes[c, i].plot(bins, img_hist / img_hist.max())img_cdf, bins = exposure.cumulative_distribution(img[..., c])axes[c, i].plot(bins, img_cdf)axes[c, 0].set_ylabel(c_color)axes[0, 0].set_title('Source')axes[0, 1].set_title('Reference')axes[0, 2].set_title('Matched')plt.tight_layout()plt.show()

实验输出

如果觉得《python库skimage 绘制直方图;绘制累计直方图;实现直方图匹配(histogram matching)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。