当前位置: 首页 > news >正文

专做中医教学网站一个人可以看片

专做中医教学网站,一个人可以看片,黄村网站建设一条龙,深圳有哪些外贸公司前言#xff1a; Hello大家好#xff0c;我是Dream。 均衡化是数字图像处理中常用的一种技术#xff0c;用于增强图像的视觉效果和对比度。#xff0c;今天我们将实现对同一张图像的直方图均衡化和自适应直方图均衡化处理#xff0c;学习一下两者的的基本原理和实现过程 Hello大家好我是Dream。 均衡化是数字图像处理中常用的一种技术用于增强图像的视觉效果和对比度。今天我们将实现对同一张图像的直方图均衡化和自适应直方图均衡化处理学习一下两者的的基本原理和实现过程一起来看看吧~ 一、直方图均衡化 直方图均衡化Histogram Equalization是一种图像处理技术通过重新分配图像灰度级别来增强图像的对比度和视觉效果。它基于整个图像的灰度直方图来调整像素的灰度值分布。通过增加较暗区域的亮度和减少较亮区域的亮度直方图均衡化可以使图像的灰度级别分布更均匀从而增强图像的细节和对比度。 1.得到灰度图 通过三同道的彩色图生成单通道的灰度图 首先我们使用PIL库中的Image.open()函数读取彩色图像并将其转换为数组。然后我们获取图像的高度和宽度并创建一个与原始图像大小相同、数据类型为uint8的全黑数组gray_img用于保存灰度图像。 接着我们遍历每个像素将三个通道的值求平均并将结果保存到灰度图像中。由于RGB图像的三个通道具有相同的权重因此将三个通道的值求平均可以得到一个比较准确的灰度值。 然后我们将灰度图像转换为PIL图像对象并使用Matplotlib库中的plt.imshow()函数显示彩色图像和灰度图像。最后我们使用PIL库中的Image.save()函数将灰度图像保存为文件。 import numpy as np import cv2 from PIL import Image import matplotlib.pyplot as plt# 读取彩色图像 img Image.open(image.jpg)# 将图像转换为数组 img_arr np.array(img)# 获取图像的高度和宽度 h, w, _ img_arr.shape# 创建一个新的数组用于保存灰度图像 gray_img np.zeros((h, w), dtypenp.uint8)# 遍历每个像素将三个通道的值求平均并保存到灰度图像中 for i in range(h):for j in range(w):gray_img[i, j] int(np.mean(img_arr[i, j]))# 将灰度图像转换为PIL图像对象 gray_pil_img Image.fromarray(gray_img) plt.imshow(img) plt.title(imge) plt.axis(off) plt.show() plt.imshow(gray_pil_img, cmapgray) plt.title(gray_pil_imge) plt.axis(off) plt.show() # 保存灰度图像 gray_pil_img.save(gray_image.jpg)2. 直方图统计 使用PIL库中的Image.open()函数读取灰度图像并使用convert(L)方法将图像转换为灰度模式。然后我们获取图像的宽度和高度并创建一个长度为256的全0列表hist用于保存直方图统计结果。 接着遍历每个像素获取其灰度值并将对应的直方图计数器加1。最后我们输出直方图统计结果即每个灰度值出现的像素数。 # 读取灰度图像 gray_img Image.open(gray_image.jpg).convert(L) width, height gray_img.size# 统计直方图 hist [0] * 256 for y in range(height):for x in range(width):pixel gray_img.getpixel((x, y))hist[pixel] 1 print(hist) # 输出直方图统计结果 for i in range(len(hist)):print(灰度值 %d: %d 个像素 % (i, hist[i]))3. 绘制直方图 # 绘制直方图 plt.bar(range(256), hist) plt.show()4. 直方图均衡化 使图片有更好的视觉效果有更高的对比度即像素的灰度分布更平均 首先我们使用PIL库中的histogram()函数对灰度图像进行直方图统计得到一个长度为256的列表equ_img其中每个元素表示对应灰度级别的像素数量。 接着我们创建一个空列表lut用于保存灰度级别的映射表。然后通过遍历equ_img列表将每个灰度级别的像素数量除以255得到一个步长step表示每个灰度级别在均衡化后的直方图中所占的比例。接下来我们定义一个变量n初始化为0用于记录当前累积的像素数量。 在内层循环中我们遍历256个灰度级别并将当前累积的像素数量除以步长step得到一个映射值n / step。这个映射值表示当前灰度级别在均衡化后的直方图中所对应的灰度级别。 最后我们使用PIL库中的point()方法根据映射表lut将灰度图像进行映射得到均衡化后的图像equ_img。在这里lut列表中的值被用作灰度级别的映射L参数表示输出图像的模式为灰度模式。 这样经过直方图均衡化处理后图像的灰度分布将更加均匀增强了图像的对比度和细节。 # 直方图均衡化 equ_img gray_img.histogram() lut [] for b in range(0, len(equ_img), 256):step sum(equ_img[b:b256]) / 255n 0for i in range(256):lut.append(n / step)n equ_img[bi] equ_img gray_img.point(lut, L)# 显示原始图像和均衡化后的图像 plt.imshow(gray_img, cmapgray) plt.title(Original Image) plt.axis(off) plt.show()plt.imshow(equ_img, cmapgray) plt.title(Equalized Image) plt.axis(off) plt.show()# 保存原始图像和均衡化后的图像 gray_img.save(Original.jpg) equ_img.save(Equalized.jpg)# 统计均衡化后的直方图 hist_equ equ_img.histogram()# 绘制均衡化前后的直方图 plt.hist(gray_img.histogram(), 256, [0, 256]) plt.title(Original Image) plt.xlim([0, 256]) plt.show()plt.hist(hist_equ, 256, [0, 256]) plt.title(Equalized Image) plt.xlim([0, 256]) plt.show()二、自适应直方图均衡化 自适应直方图均衡化Adaptive Histogram Equalization是直方图均衡化的一种变体它考虑到图像中不同区域的局部差异。与直方图均衡化不同自适应直方图均衡化将图像分成多个小块并在每个小块内独立地应用直方图均衡化。通过这种方式自适应直方图均衡化可以更好地保留图像的细节并避免过度增强噪声。自适应直方图均衡化可以根据图像的局部特征自动调整每个小块的灰度级别以实现更精细的图像增强。 1.自适应直方图均衡化AHE AHE是一种局部直方图均衡化方法它将图像分成若干个小区域对每个小区域进行直方图均衡化处理从而增强图像的对比度。该算法的核心思想是在每个小区域内计算直方图并将其变换为累积分布函数CDF然后将CDF拉伸以增加对比度。因此AHE可以有效地增强图像中的局部细节信息。 在此处我们的输入参数包括原始图像img和窗口大小window_size。首先函数遍历每个像素获取以该像素为中心的大小为window_size的窗口。如果窗口越界则跳过该像素。然后计算窗口的直方图并计算其累积分布函数。接着将CDF归一化并拉伸以增加窗口内像素的对比度。最后将均衡化后的像素值放回原图中得到均衡化后的结果。 # 自适应直方图均衡化AHE def adaptive_histogram_equalization(img, window_size):# 获取图像大小height, width img.shape[:2]# 创建一个全黑的图像result np.zeros((height, width), dtypenp.uint8)# 遍历每个像素for i in range(height):for j in range(width):# 获取窗口中心点center_x, center_y i window_size // 2, j window_size // 2# 如果窗口越界则跳过if center_x window_size // 2 or center_x height - window_size // 2 or center_y window_size // 2 or center_y width - window_size // 2:continue# 获取窗口window img[center_x - window_size // 2:center_x window_size // 2 1, center_y - window_size // 2:center_y window_size // 2 1]# 计算窗口的直方图hist, _ np.histogram(window.ravel(), 256, [0, 256])# 计算累积分布函数cdf hist.cumsum()# 归一化cdf_normalized cdf * 255 / cdf[-1]# 将均衡化后的像素值放回原图中result[i][j] cdf_normalized[img[i][j]]return result2.限制对比度自适应直方图均衡化CRHE CRHE是在AHE的基础上增加了对比度限制。它通过在AHE之后对像素值进行限制以避免过度增加对比度而导致噪声的出现。该算法的核心思想是先使用AHE增强图像的对比度然后使用限制对比度的方法对像素值进行截断从而控制对比度的增加。 在代码中输入参数包括原始图像img、窗口大小window_size和对比度限制因子clip_limit。首先调用自己实现的自适应直方图均衡化函数adaptive_histogram_equalization对原始图像进行直方图均衡化处理得到均衡化后的结果。接着使用OpenCV库中的cv2.createCLAHE函数创建一个限制对比度的CLAHE对象并将均衡化后的图像作为输入进行处理。 # 限制对比度自适应直方图均衡化CRHE def contrast_limited_adaptive_histogram_equalization(img, window_size, clip_limit):# 使用自己实现的自适应直方图均衡化ahe_img adaptive_histogram_equalization(img, window_size)# 使用OpenCV库实现限制对比度自适应直方图均衡化clahe cv2.createCLAHE(clipLimitclip_limit, tileGridSize(window_size, window_size))result clahe.apply(ahe_img)return result3.读取图片 # 读取图片 img cv2.imread(image.jpg, cv2.IMREAD_GRAYSCALE)4.自适应直方图均衡化 首先创建一个与原始图像img相同大小的全黑图像ahe_result用于保存处理后的结果。然后使用一个循环遍历多个窗口尺寸依次调用自适应直方图均衡化函数adaptive_histogram_equalization对原始图像进行处理并将处理后的结果加到ahe_result中。最后得到多个尺寸的均衡化结果的平均值作为最终的均衡化结果。 我们使用了不同尺寸的窗口分别为50、100、150和200。最后将这四个结果取平均值作为最终结果这种方法可以提高均衡化的效果因为不同尺寸的窗口可以捕捉到图像中不同尺度的局部细节信息从而增强图像的对比度和细节信息避免过大或过小的窗口对结果产生较大影响。 # 自适应直方图均衡化 # 创建一个和原始图像大小相同的全零数组ahe_result用于存储最终的自适应直方图均衡化结果ahe_result np.zeros_like(img)# 遍历不同的窗口大小从50到200步长为50 for window_size in range(50, 201, 50):# 对原始图像img进行自适应直方图均衡化操作使用当前窗口大小window_sizeahe_img adaptive_histogram_equalization(img, window_size)# 将每次处理后的图像ahe_img累加到ahe_result中ahe_result ahe_img# 将ahe_result除以4取整得到最终的自适应直方图均衡化结果 ahe_result // 45.限制对比度自适应直方图均衡化 首先创建一个与原始图像img相同大小的全黑图像crhe_result用于保存处理后的结果。然后使用一个循环遍历多个窗口尺寸依次调用限制对比度自适应直方图均衡化函数对原始图像进行处理并将处理后的结果加到crhe_result中。在本例中设置对比度限制因子clip_limit为2.0。 我们使用了不同尺寸的窗口分别为50、100、150和200。最后将这四个结果取平均值作为最终结果避免过大或过小的窗口对结果产生较大影响。 # 限制对比度自适应直方图均衡化 # 创建一个和原始图像大小相同的全零数组crhe_result用于存储最终的限制对比度自适应直方图均衡化结果crhe_result np.zeros_like(img)# 遍历不同的窗口大小从50到200步长为50 for window_size in range(50, 201, 50):# 对原始图像img进行限制对比度自适应直方图均衡化操作使用当前窗口大小window_size和对比度限制参数2.0crhe_img contrast_limited_adaptive_histogram_equalization(img, window_size, 2.0)# 将每次处理后的图像crhe_img累加到crhe_result中crhe_result crhe_img# 将crhe_result除以4取整得到最终的限制对比度自适应直方图均衡化结果 crhe_result // 46.可视化显示结果 # 显示结果 fig, ax plt.subplots(nrows1, ncols3, figsize(12, 8)) ax[0].imshow(img, cmapgray) ax[0].set_title(Original1 Image) ax[1].imshow(ahe_result, cmapgray) ax[1].set_title(AHE1 Image) ax[2].imshow(crhe_result, cmapgray) ax[2].set_title(CRHE1 Image) plt.show()三、对比总结 直方图均衡化Histogram Equalization和自适应直方图均衡化Adaptive Histogram Equalization都是用于图像增强的技术目的是改善图像的对比度和视觉效果。它们的主要区别在于处理图像的方式和局部性。 直方图均衡化是一种全局的方法它基于整个图像的灰度直方图来调整像素的灰度值分布。通过使灰度级别在图像中更均匀地分布直方图均衡化可以增强图像的对比度和细节。它使用累积分布函数将原始图像中的灰度级别映射到一个新的灰度范围从而实现图像的均衡化。 然而直方图均衡化是一种全局的方法它没有考虑到图像中不同区域的局部差异。这可能会导致图像的某些区域过度增强或细节丢失的问题。为了解决这个问题自适应直方图均衡化应运而生。 自适应直方图均衡化是一种局部的方法在处理图像时会考虑到不同区域的灰度分布情况。它将图像分成许多小区域对每个区域独立地应用直方图均衡化。通过这种方式自适应直方图均衡化可以更好地保留图像细节并避免过度放大噪声。 自适应直方图均衡化的一种常见变体是自适应直方图均衡化CLAHE它在每个小区域中使用对比度限制来防止过度放大噪声。CLAHE的核心思想是将图像分成许多小块然后对每个小块进行局部直方图均衡化并对像素值进行裁剪以限制对比度的增强程度。通过这种方式CLAHE在增强图像细节的同时有效控制了噪声的增强。 总而言之直方图均衡化是一种全局的方法通过整个图像的灰度直方图来增强图像对比度。 而 自适应直方图均衡化是一种局部的方法通过对图像的小块进行独立的直方图均衡化来增强图像并通过对比度限制来控制噪声的放大。
http://www.w-s-a.com/news/890451/

相关文章:

  • 展会网站怎么做网页设计与制作教程版徐洪亮课后答案
  • 石景山网站建设设计公司建设网站怎么建立服务器
  • 本地生活服务平台app网站关键词优化原理
  • 建网站的公司叫什么重庆论坛建站模板
  • 湖北网站制作公司银川网站建设哪家不错
  • 网站后台演示地址服装网站建设公司推荐
  • 湖北钟祥建设局网站旅游哪个网站最好
  • 浙江建设工程信息网站辽宁建设工程信息网场内业绩什么意思
  • 郑州做网站公司 汉狮网络专业图片搜集网站怎么做
  • 网站托管是什么品牌推广营销平台
  • 制作网站的难度贵州省兴义市建设局网站
  • 永春建设局网站室内设计师培训班学费多少
  • 做仿站如何获取网站源码windows2012做网站
  • 网站建设最好的公司东莞外贸网站
  • 普兰店网站建设一般做网站什么价格
  • 网站建设的发展目标甘肃网站设计公司
  • 常州西站建设规划室内装修设计学校哪里好
  • 大连网站制作选择ls15227如何编辑网站
  • 网站发稿平台迪士尼网站是谁做的
  • 常州有哪些好的网站建设案例wordpress 360 插件
  • 模板网站有后台么柳城网站建设
  • 地方门户网站制作一级做c爱片的网站
  • 自己上传图片做动漫图网站北京福田汽车
  • 一级a做爰片免费网站录像ps做网站图片水印
  • 网页广告投放成都优化推广公司
  • 网站开发 印花税网页制作站点
  • 创建个人网站有什么好处国外建站系统
  • 桂林学校网站制作2018年网站设计公司
  • 建网站不想用怎样撤销搜狗收录提交入口网址
  • 做简单网站需要学什么软件有哪些南通优普网站建设