外贸网站怎么做谷歌搜索,wordpress商城教程,重庆市建设网站,可以安装两个wordpress文章目录 #x1f9e1;#x1f9e1;实验流程#x1f9e1;#x1f9e1;1.读入图像‘rice.png’#xff0c;在一个窗口中显示灰度级n64#xff0c;128和256的图像直方图。2.调解图像灰度范围#xff0c;观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti… 文章目录 实验流程1.读入图像‘rice.png’在一个窗口中显示灰度级n64128和256的图像直方图。2.调解图像灰度范围观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘tire.tif’进行直方图均衡化处理比较处理前后图像及直方图分布的变化。4.读取一幅彩色图像对RGB图像的每个通道进行直方图均衡化,对均衡化后进行重新合并成彩色图像展示不同阶段的图像效果。另将RGB图像转换为HSV图像rgb2hsv函数分别对三分量的图像行直方图均衡化最后合并成新的彩色图像分析不同阶段的图像效果。5.自行设计程序实现图像的直方图均衡 所有代码 实验流程 1.读入图像‘rice.png’在一个窗口中显示灰度级n64128和256的图像直方图。 2.调解图像灰度范围观察变换后的图像及其直方图的变化。 3.分别对图像‘pout.tif’和‘tire.tif’进行直方图均衡化处理比较处理前后图像及直方图分布的变化。 4.读取一幅彩色图像对RGB图像的每个通道进行直方图均衡化,对均衡化后进行重新合并成彩色图像展示不同阶段的图像效果。另将RGB图像转换为HSV图像rgb2hsv函数分别对三分量的图像行直方图均衡化最后合并成新的彩色图像分析不同阶段的图像效果。 如下图对RGB三个颜色通道进行直方图均衡化后图像的对比度得到了改善灰度级的分布更加均匀。 如下图HSV模型是基于人类感知的颜色模型HSV分别表示色相Hue、饱和度Saturation和明度Value对其均衡化后增强了图像的对比度和色彩鲜艳度使得图像更加清晰、生动 5.自行设计程序实现图像的直方图均衡 主要思路 1.统计原始图像的直方图 2.计算直方图累积分布 3.用累积分布函数作变换函数进行图像灰度变换 所有代码 主要采用opencv库这里的代码是用jupyter写的。 1-1、1-2 直方图显示、直方图灰度调节image cv2.imread(img/test1_rice.png, cv2.IMREAD_GRAYSCALE)plt.figure(figsize(15, 12))# 显示原始图像和直方图
plt.subplot(3, 3, 1)
plt.imshow(image, cmapgray)
plt.title(Original Image, fontsize18)
plt.axis(off)for i, n in enumerate([64, 128, 256]):plt.subplot(3, 3, i 4)plt.hist(image.ravel(), binsn, range[0, 256], colorb, alpha0.5)plt.title(Histogram (n{}).format(n), fontsize18)plt.xlabel(Pixel Value, fontsize16)plt.ylabel(Frequency, fontsize16)# 使用imadjust函数进行灰度调节
adjusted_image cv2.convertScaleAbs(image, alpha1.5, beta20)# 显示调节后的图像和直方图
plt.subplot(3, 3, 7)
plt.imshow(adjusted_image, cmapgray)
plt.title(Adjusted Image, fontsize18)
plt.axis(off)plt.subplot(3, 3, 8)
plt.hist(adjusted_image.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Adjusted Histogram, fontsize18)
plt.xlabel(Pixel Value, fontsize16)
plt.ylabel(Frequency, fontsize16)plt.tight_layout()
plt.show()1-3 直方图均衡化
image_pout cv2.imread(img/test1_pout.png, cv2.IMREAD_GRAYSCALE)
image_tire cv2.imread(img/test1_tire.png, cv2.IMREAD_GRAYSCALE)# 直方图均衡化处理
equalized_pout cv2.equalizeHist(image_pout)
equalized_tire cv2.equalizeHist(image_tire)# 绘制处理前后图像及直方图分布的变化
plt.figure(figsize(12, 8))# 原始图像及其直方图
plt.subplot(2, 4, 1)
plt.imshow(image_pout, cmapgray)
plt.title(Original Pout)
plt.axis(off)plt.subplot(2, 4, 2)
plt.hist(image_pout.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (Before))
plt.xlabel(Pixel Value)
plt.ylabel(Frequency)plt.subplot(2, 4, 5)
plt.imshow(image_tire, cmapgray)
plt.title(Original Tire)
plt.axis(off)plt.subplot(2, 4, 6)
plt.hist(image_tire.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (Before))
plt.xlabel(Pixel Value)
plt.ylabel(Frequency)# 直方图均衡化后图像及其直方图
plt.subplot(2, 4, 3)
plt.imshow(equalized_pout, cmapgray)
plt.title(Equalized Pout)
plt.axis(off)plt.subplot(2, 4, 4)
plt.hist(equalized_pout.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (After))
plt.xlabel(Pixel Value)
plt.ylabel(Frequency)plt.subplot(2, 4, 7)
plt.imshow(equalized_tire, cmapgray)
plt.title(Equalized Tire)
plt.axis(off)plt.subplot(2, 4, 8)
plt.hist(equalized_tire.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (After))
plt.xlabel(Pixel Value)
plt.ylabel(Frequency)plt.tight_layout()
plt.show()1-4 RGB和HSV均衡化
image cv2.imread(img/test1_LenaRGB.tif)# 处理RGB图像
image_rgb cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # opencv是BGR imshow是RGB
r_channel, g_channel, b_channel cv2.split(image_rgb)
r_equalized cv2.equalizeHist(r_channel)
g_equalized cv2.equalizeHist(g_channel)
b_equalized cv2.equalizeHist(b_channel)
equalized_image cv2.merge((r_equalized, g_equalized, b_equalized))plt.figure(figsize(18, 20))plt.subplot(4, 2, 1)
plt.imshow(image_rgb)
plt.title(Original Channels, fontsize18)
plt.axis(off)plt.subplot(4, 2, 2)
plt.imshow(cv2.merge((r_equalized, g_equalized, b_equalized)))
plt.title(Equalized Channels, fontsize18)
plt.axis(off)plt.subplot(4, 2, 3)
plt.hist(r_channel.ravel(), bins256, range[0, 256], colorr, alpha0.5)
plt.hist(g_channel.ravel(), bins256, range[0, 256], colorg, alpha0.5)
plt.hist(b_channel.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (Before Equalization), fontsize18)
plt.xlabel(Pixel Value, fontsize18)
plt.ylabel(Frequency, fontsize18)plt.subplot(4, 2, 4)
plt.hist(r_equalized.ravel(), bins256, range[0, 256], colorr, alpha0.5)
plt.hist(g_equalized.ravel(), bins256, range[0, 256], colorg, alpha0.5)
plt.hist(b_equalized.ravel(), bins256, range[0, 256], colorb, alpha0.5)
plt.title(Histogram (After Equalization), fontsize18)
plt.xlabel(Pixel Value, fontsize18)
plt.ylabel(Frequency, fontsize18)# 处理HSV图像
hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
h_channel, s_channel, v_channel cv2.split(hsv_image)
equalized_h_channel cv2.equalizeHist(h_channel)
equalized_s_channel cv2.equalizeHist(s_channel)
equalized_v_channel cv2.equalizeHist(v_channel)
equalized_hsv_image cv2.merge((equalized_h_channel, equalized_s_channel, equalized_v_channel))
equalized_rgb_image cv2.cvtColor(equalized_hsv_image, cv2.COLOR_HSV2RGB)plt.subplot(4, 2, 5)
plt.imshow(hsv_image)
plt.title(Original HSV Channels, fontsize18)
plt.axis(off)plt.subplot(4, 2, 6)
plt.imshow(equalized_rgb_image)
plt.title(Equalized HSV Channels, fontsize18)
plt.axis(off)plt.subplot(4, 2, 7)
plt.hist(h_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.hist(s_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.hist(v_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.title(Histogram (After Equalization), fontsize18)
plt.xlabel(Pixel Value, fontsize18)
plt.ylabel(Frequency, fontsize18)plt.subplot(4, 2, 8)
plt.hist(equalized_h_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.hist(equalized_s_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.hist(equalized_v_channel.ravel(), bins256, range[0, 256], alpha0.5)
plt.title(Histogram (After Equalization), fontsize18)
plt.xlabel(Pixel Value, fontsize18)
plt.ylabel(Frequency, fontsize18)plt.tight_layout()
plt.show()1-5 手写直方图均衡化
#建立原始图像各灰度级的灰度值与像素个数对应表
def Origin_histogram( img ):
# print(img.shape)histogram {}for i in range( img.shape[0] ):for j in range( img.shape[1] ):k img[i][j]if k in histogram:histogram[k] 1else:histogram[k] 1sorted_histogram {}#建立排好序的映射表sorted_list sorted( histogram )#根据灰度值进行从低至高的排序for j in range( len( sorted_list ) ):sorted_histogram[ sorted_list[j] ] histogram[ sorted_list[j] ]return sorted_histogramdef equalization_histogram( histogram, img ):
# print(histogram)pr {} #建立概率分布映射表for i in histogram.keys():pr[i] histogram[i] / ( img.shape[0] * img.shape[1] ) # 计算累计分布变换函数tmp 0for m in pr.keys():tmp pr[m]pr[m] max( histogram ) * tmp
# print(pr)# 将原图像每一点都进行变换new_img np.zeros( shape ( img.shape[0], img.shape[1] ), dtype np.uint8 )for k in range( img.shape[0] ):for l in range( img.shape[1] ):new_img[k][l] pr[img[k][l]]return new_img# 计算灰度直方图
def GrayHist( img ):height, width img.shapegrayHist np.zeros([256], np.uint64)for i in range(height):for j in range(width):grayHist[img[i][j]] 1return grayHistimg cv2.imread( img/test1_pout.png, cv2.IMREAD_GRAYSCALE )
# 计算原图灰度直方图
origin_histogram Origin_histogram( img )
# 直方图均衡化
new_img equalization_histogram( origin_histogram, img )
# 计算均衡化后的灰度直方图
origin_grayHist GrayHist(img)
equaliza_grayHist GrayHist( new_img )# 绘制灰度直方图
x np.arange(256)
plt.figure(figsize(15,10))
plt.subplot( 2, 2, 1 )
plt.plot(x, origin_grayHist, linewidth2 , alpha0.5)
plt.title(Origin,fontsize18)
plt.ylabel(Frequency,fontsize18)plt.subplot( 2, 2, 2 )
plt.plot(x, equaliza_grayHist, linewidth2, alpha0.5)
plt.title(Equalization,fontsize18)
plt.ylabel(Frequency,fontsize18)plt.subplot( 2, 2, 3 )
plt.imshow( img, cmap plt.cm.gray )
plt.title( Origin ,fontsize18)plt.subplot( 2, 2, 4 )
plt.imshow( new_img, cmap plt.cm.gray )
plt.title( Equalization ,fontsize18)
plt.show()