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

网站快照历史设计类专业考研

网站快照历史,设计类专业考研,html网页制作案例,网页升级紧急跳转图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图#xff0c;你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。… 图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。通过理解和应用直方图分析技术你可以提高图像质量、执行阈值操作、分析颜色成分、提取有用的特征以及更有效地可视化和理解图像。 图像直方图 每个图像都由单独的像素组成就像网格上的小点一样。假设我们有一个大小为 250 列和 100 行的图像总共 2500 个像素。每个像素都可以有不同的颜色值用 0 到 255 范围内的数字表示。 为了可视化图像中颜色值的分布我们可以创建直方图。该直方图充当一组条形图显示具有相同颜色值的像素数。通过比较条形的高度我们可以轻松识别图像中哪些颜色值更突出或更频繁地出现。这种图形表示为图像的整体颜色组成和分布提供了宝贵的见解。 图像直方图单色 现在记住像素强度 0 → 黑色 255 → 白色 因此如果我们的直方图向左移动左偏则图像会包含更多黑色像素如果我们的直方图向右移动右偏图像会包含更多白色像素。 左偏和右偏直方图 所以我相信你已经完全理解了 更黑→更暗的图像更白→更亮的图像 现在让我们在 OpenCV 中进行直方图计算。 首先我们将加载图像并将其可视化。 #import necessary libraries import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/nature.jpg)#visualizing cv2.namedWindow(BGR Image, cv2.WINDOW_NORMAL); cv2.imshow(BGR Image,image);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 在绘制直方图之前我们可以分离该图像中的颜色通道。 B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer 现在我们使用 OpenCV 函数 cv.calcHist() 计算并找到每一层的直方图并使用 OpenCV 和 Matplotlib 函数绘制这些直方图 cv.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) ● imagesuint8 或float32 类型的源图像。它应该放在方括号中即“[img]”。 ● channels也在方括号中给出。它是我们计算直方图的通道的索引。例如如果输入是灰度图像则其值为[0]。对于彩色图像可以通过[0]、[1]或[2]分别计算蓝色、绿色或红色通道的直方图。 ● mask蒙版图像。为了找到整个图像的直方图它被指定为“None”。但是如果你想找到图像特定区域的直方图则必须为其创建一个蒙版图像并将其作为蒙版。 ● histSizeBIN 计数。需要在方括号中给出。对于全尺寸我们通过[256]。 ● ranges范围。通常是[0,256]。 B_histo  cv2.calcHist([image],[0], None, [256], [0,256]) G_histo  cv2.calcHist([image],[1], None, [256], [0,256]) R_histo  cv2.calcHist([image],[2], None, [256], [0,256]) 现在我们使用 matplotlib 将它们绘制在子图中。 你可以在不同设置的图像上尝试此操作。 完整代码 #import necessary libraries import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/nature.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer#calculating histograms for each channel B_histo  cv2.calcHist([image],[0], None, [256], [0,256]) G_histo  cv2.calcHist([image],[1], None, [256], [0,256]) R_histo  cv2.calcHist([image],[2], None, [256], [0,256])#visualizing histograms plt.subplot(2, 2, 1) plt.plot(B_histo, b) plt.subplot(2, 2, 2) plt.plot(G_histo, g) plt.subplot(2, 2, 3) plt.plot(R_histo, r)#visualizing image cv2.namedWindow(BGR Image, cv2.WINDOW_NORMAL); cv2.imshow(BGR Image,image); cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 曝光过度和曝光不足的图像 然后我们可以扩展这个想法来识别曝光过度太亮的图像和曝光不足太暗的图像。 让我们看看这些图像的直方图。 使用 Matplotib 和 OpenCV 绘制直方图 显然一个直方图左偏表示图像曝光不足而另一直方图右偏表示图像曝光过度。 在这里我们只需查看直方图就可以清楚地了解图像是否曝光不足或曝光过度。 直方图均衡 考虑曝光不足或曝光过度的图像其像素值仅局限于某个特定的值范围。 例如较亮的图像将所有像素限制为高值。 但是一个好的图像将具有来自图像的所有区域的像素。所以你需要将这个直方图拉伸到两端。这通常会提高图像的对比度。 当对彩色图像执行直方图均衡时我们通常将该过程分别应用于图像中RGB颜色值的红色、绿色和蓝色分量。 首先我们读取图像并将图像分成三个颜色层。 import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/underexposed_image.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer 然后我们使用 cv.equalizeHist () 来均衡每个颜色层的直方图。使用 Matplotlib 和 OpenCV 将它们可视化。 b_equi  cv2.equalizeHist(B) g_equi  cv2.equalizeHist(G) r_equi  cv2.equalizeHist(R)plt.imshow(b_equi) plt.title(b_equi) plt.show() plt.imshow(g_equi) plt.title(g_equi) plt.show() plt.imshow(r_equi) plt.title(r_equi) plt.show() 使用 OpenCV 均衡 R、G 和 B 层 通过均衡的颜色层我们使用 cv.calcHist() 计算每种颜色的直方图。然后将它们全部绘制出来。 B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256])plt.subplot(2, 2, 1) plt.plot(G_histo, g) plt.subplot(2, 2, 2) plt.plot(R_histo, r) plt.subplot(2, 2, 3) plt.plot(B_histo, b) 你一定已经注意到我们在“channels”位置仅使用了 [0]。在前面的例子中我们使用了所有[0]、[1]和[2]。这是由于分离通道的可用性。因此只有 1 个通道。因此对于所有直方图“channels”为 [0] 或者你可以获取原始图像中每个通道的直方图并使用均衡后的颜色层绘制它们。 #calculate histograms for each channel seperately #Equilized channels B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256]) #Original channels BO_histo  cv2.calcHist([image],[0], None, [256], [0,256])  GO_histo  cv2.calcHist([image],[1], None, [256], [0,256]) RO_histo  cv2.calcHist([image],[2], None, [256], [0,256])#visualize the channel histograms seperately plt.figure(figsize(10,12), )plt.subplot(3, 2, 1) plt.title(Green Original) plt.plot(GO_histo, g)plt.subplot(3, 2, 2) plt.title(Green Equilized) plt.plot(G_histo, g)plt.subplot(3, 2, 3) plt.title(Red Original) plt.plot(RO_histo, r)plt.subplot(3, 2, 4) plt.title(Red Equilized) plt.plot(R_histo, r)plt.subplot(3, 2, 5) plt.title(Blue Original) plt.plot(BO_histo, b)plt.subplot(3, 2, 6) plt.title(Blue Equilized) plt.plot(B_histo, b) s 原始图像颜色直方图与均衡图像颜色直方图 继续下一步我们现在拥有的只是层。为了从中获得图像我们需要合并它们。 equi_im  cv2.merge([b_equi,g_equi,r_equi]) 现在让我们并排查看均衡后的图像和原始图像。 cv2.namedWindow(Original Image, cv2.WINDOW_NORMAL); cv2.imshow(Original Image,image); cv2.namedWindow(New Image, cv2.WINDOW_NORMAL); cv2.imshow(New Image,equi_im);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 使用 OpenCV 均衡图像 完整代码 import cv2 import numpy as np import matplotlib.pyplot as plt#using opencv to read an image #BGR Image image  cv2.imread(C:/users/public/pictures/underexposed_image.jpg)#seperating colour channels B  image[:,:,0] #blue layer G  image[:,:,1] #green layer R  image[:,:,2] #red layer#equilize each channel seperately b_equi  cv2.equalizeHist(B) g_equi  cv2.equalizeHist(G) r_equi  cv2.equalizeHist(R)#calculate histograms for each channel seperately B_histo  cv2.calcHist([b_equi],[0], None, [256], [0,256])  G_histo  cv2.calcHist([g_equi],[0], None, [256], [0,256]) R_histo  cv2.calcHist([r_equi],[0], None, [256], [0,256])#merge thechannels and create new image equi_im  cv2.merge([b_equi,g_equi,r_equi])#visualize the equilized channels seperately plt.imshow(b_equi) plt.title(b_equi) plt.show() plt.imshow(g_equi) plt.title(g_equi) plt.show() plt.imshow(r_equi) plt.title(r_equi) plt.show()#visualize the channel histograms seperately plt.subplot(2, 2, 1) plt.plot(G_histo, g) plt.subplot(2, 2, 2) plt.plot(R_histo, r) plt.subplot(2, 2, 3) plt.plot(B_histo, b)#visualize the original and equilized images cv2.namedWindow(Original Image, cv2.WINDOW_NORMAL); cv2.imshow(Original Image,image); cv2.namedWindow(New Image, cv2.WINDOW_NORMAL); cv2.imshow(New Image,equi_im);cv2.waitKey(0)  0xFF  cv2.destroyAllWindows() 感谢阅读
http://www.pierceye.com/news/949921/

相关文章:

  • 南宁网络建站直接用源码做网站盗版吗
  • 哪些网站可以做驾考试题旅游网站排名排行榜
  • 网站宣传专利被罚账户竞价托管费用
  • 芙蓉区网站建设qq建设网站首页
  • 做音乐网站怎么放音乐常州网红打卡景点
  • 网站做的题不小心关闭了如何成为室内设计师
  • 营销型网站建设公司地址外贸网站seo优化
  • 建设网站是什么科目wordpress对接易支付宝
  • wordpress英文意思能做SEO优化的网站建设
  • 海沧建设网站多少一站式服务英文
  • wordpress网站需要多大空间建设营销型网站
  • id97网站怎么做的项目营销策划方案
  • 站群网站怎么做缓存
  • 网站(网店)建设方案范文北京网站搭建服务
  • 建设银行网站怎么设置转账额度百度竞价培训班
  • 八大员继续教育入口做优化网站注意什么
  • 网络空间服务商宁波seo网络推广推荐公众号
  • 网站登录注册做验证码的目地汕头网站建设浩森宇特
  • 做鼻翼整形整形的网站开原网站开发
  • 宿州专业网站建设学做app
  • 宁德商城网站开发设计个人网站在那建设
  • 培训网站建设情况淄博网站排名优化
  • 运营一个网站的成本网络营销第二板斧是什么
  • 企业建站报价手机网站开发开发
  • 足彩网站怎样做推广友情链接官网
  • 十大免费音乐网站网络营销策划推广公司有哪些
  • 免费开源代码网站上海企业建设网站
  • 万家灯火网站建设win7系统做网站服务器
  • 网站直播用php怎么做做家旅游的视频网站好
  • 平台网站建设方案查看自己电脑的网站开发语言