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

做普工招聘网站河南建筑公司实力排名

做普工招聘网站,河南建筑公司实力排名,免费的网站服务器,郑州建设网站企业定制写在前面 本篇文章是opencv学习的第五篇文章,主要讲解了直方图与傅里叶变换的有关操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰 写在中间 一、直方图 ( 1 &…

写在前面

本篇文章是opencv学习的第五篇文章,主要讲解了直方图与傅里叶变换的有关操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰


写在中间

一、直方图

( 1 )简单介绍

直方图是可以对整幅图的灰度分布进行整体了解的图示,通过直方图我们可以对图像的对比度、亮度和灰度分布等有一个直观了解。
在数字图像处理中,直方图可以用来了解图像中像素的分布情况。直方图显示了图像中每个灰度级别的像素数目,使我们可以对图像的对比度、亮度和灰度分布等有一个直观了解。
直方图通常用来进行图像增强和色彩校正。例如,如果我们发现图像的直方图集中在低灰度级别处,可以通过调整图像的亮度和对比度来增强图像。同样地,如果图像的直方图峰值偏移,可以通过色彩校正来调整图像的色彩平衡。

( 2 )操作实现

cv2.calcHist(images, channels, mask, histSize, ranges)

images:要计算直方图的图像数组。(以 [img] 的形式传入)

channels:灰度图为 [0],彩色图B/G/R分别传入[0][1][2]。

mask:掩模图像,统计正负图像的数据就设置为None

histSize:指定直方图的大小。默认值为 [256],表示每个通道的像素数量。

ranges:指定直方图中每个通道像素值的范围。通常情况下为[0, 256],如果没有提供此参数,那么 OpenCV 会自动计算范围。

( 3 )代码展示

# 灰度直方图
img = cv2.imread("D:\python\Program\pythonProject\photos\A6.png", 0)hist = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.hist(img.ravel(), 256)
plt.show()# BGR 直方图
img = cv2.imread("D:\python\Program\pythonProject\photos\A6.png")
color = ('b', 'g', 'r')
for i, col in enumerate(color):histr = cv2.calcHist([img], [i], None, [256], [0, 256])plt.plot(histr, color=col)plt.xlim([0, 256])
plt.show()

( 4 )效果实现

灰度直方图

在这里插入图片描述

BGR直方图

在这里插入图片描述

二、图像均衡化

( 1 )简单介绍

直方图均衡化:

  1. 包括灰度直方图均衡化和彩色直方图均衡化这两种。
  2. 其中前者比较简单,直接使用函数即可,后者需要对三个通道进行分离,分别处理后合并输出。

自适应图像均衡化:

  1. 直方图均衡化是应用于整幅图片的,会导致一些图片部位太亮,导致大部分细节丢失,因此引入自适应均衡来解决这个问题。

  2. 它在每一个小区域内(默认8×8)进行直方图均衡化。当然,如果有噪点的话,噪点会被放大,需要对小区域内的对比度进行限制。

( 2 )操作实现

cv2.equalizeHist()

  • 参数为输入图像

( 3 )代码展示

img = cv2.imread("D:\python\Program\pythonProject\photos\A6.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换为灰度图# 灰度图均衡化
equ = cv2.equalizeHist(gray)
hist = cv2.calcHist([equ], [0], None, [256], [0, 256])
plt.hist(img.ravel(), 256)
plt.show()# 原图和均衡图
result1 = np.hstack((gray, equ))
cv2.imshow('result1', result1)
cv2.waitKey(0)
cv2.destroyAllWindows()#---------------------------------------------------------------# 彩色图像均衡化,需要分解通道 对每一个通道均衡化
(b, g, r) = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
# 合并每一个通道
equ2 = cv2.merge((bH, gH, rH))# 原图和均衡图
result2 = np.hstack((img, equ2))
cv2.imshow('result2', result2)
cv2.waitKey(0)
cv2.destroyAllWindows()# 自适应均衡图
img = cv2.imread("D:\python\Program\pythonProject\photos\A6.png", 0)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
cl1 = clahe.apply(img)# 原图、直方均衡图、自适应均衡图
result3 = np.hstack((img, equ, cl1))
cv2.imshow('result3', result3)
cv2.waitKey(0)
cv2.destroyAllWindows()

( 4 )效果实现

灰度图均衡化:

在这里插入图片描述

彩色图均衡化:

在这里插入图片描述

自适应均衡图:(原图、直方均衡图、自适应均衡图)

在这里插入图片描述

三、傅里叶变换

( 1 )简单介绍

傅里叶变换是一种用于信号处理和图像处理的重要技术。

傅里叶变换的作用:

  • 高频:变化剧烈的灰度分量,例如边界。

  • 低频:变化缓慢的灰度分量,例如一片大海

滤波:

  • 低通滤波器:只保留低频(振幅较为平缓),会使得图像模糊。

  • 高通滤波器:只保留高频(振幅较为剧烈),会使得图像细节增强。

( 2 )操作实现

cv2.dft(img_float32, flags=cv2.DFT_COMPLEX_OUTPUT)

第一个参数是要转换的图像.

第二个参数是指定输出类型的标志。在这里,我们使用了cv2.DFT_COMPLEX_OUTPUT标志,意味着输出将是一个复数矩阵。复数矩阵可以表示频域中的实部和虚部信息。

( 3 )代码实现
频谱展示:

img = cv2.imread("D:\python\Program\pythonProject\photos\A7.png", 0)
# 输入图像需要先转换成np.float32 格式
img_float32 = np.float32(img)dft = cv2.dft(img_float32, flags=cv2.DFT_COMPLEX_OUTPUT)# 得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现。
dft_shift = np.fft.fftshift(dft)
# 得到灰度图能表示的形式
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()

高通和低通滤波:

img = cv2.imread("D:\python\Program\pythonProject\photos\A7.png", 0)
img_float32 = np.float32(img)dft = cv2.dft(img_float32, flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)rows, cols = img.shape
crow, ccol = int(rows/2), int(cols/2)     # 中心位置# 低通滤波:输出细节特征,轮廓就会显得模糊,创建掩码时需要中心化为1,周围为0的一个mask矩阵。
mask_1 = np.zeros((rows, cols, 2), np.uint8)
mask_1[crow-30:crow+30, ccol-30:ccol+30] = 1# 高通滤波:输出轮廓特征,除去细节,创建掩码时需要中心化为0,周围为1的一个mask矩阵。
mask_2 = np.ones((rows, cols, 2), np.uint8)
mask_2[crow-30:crow+30, ccol-30:ccol+30] = 0# IDFT(低通)
fshift = dft_shift*mask_1
f_ishift = np.fft.ifftshift(fshift)
img_back_1 = cv2.idft(f_ishift)
img_back_1 = cv2.magnitude(img_back_1[:, :, 0], img_back_1[:, :, 1])# IDFT(高通)
fshift = dft_shift*mask_2
f_ishift = np.fft.ifftshift(fshift)
img_back_2 = cv2.idft(f_ishift)
img_back_2 = cv2.magnitude(img_back_2[:, :, 0], img_back_2[:, :, 1])# 展示
plt.subplot(121), plt.imshow(img_back_1, cmap='gray')
plt.title('LPF'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(img_back_2, cmap='gray')
plt.title('HPF'), plt.xticks([]), plt.yticks([])plt.show()

( 4 )效果展示

频谱展示

在这里插入图片描述

高通滤波和低通滤波

在这里插入图片描述


写在后面

👍🏻 点赞,你的认可是我创作的动力!
⭐ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

http://www.yayakq.cn/news/630288/

相关文章:

  • 做什么软件做网站效率最好公司是做小程序还是做网站
  • 网站怎样上传到空间网站建设的整个流程图
  • 秦皇岛网站定制哪家好2024免费网站推广
  • 汽车 营销 网站建设广州车陂网站建设公司
  • 快速建站完整版网站建设合同书 简易
  • 网站开发技术栈织梦移动端网站模板下载
  • 网站做301重定向的作用西部数码网站管理助手错误
  • 衡水建立网站网站建设案例渠道
  • 对网站建设的调研报告百度快照提交入口网址
  • 广州学校论坛网站建设汽车网站flash模板
  • 做消费金融网站360全景网站制作
  • python 做网站合适吗做网站 信息集成过程的顺序
  • 河南网站建设平台达州网站制作
  • 邢台网站建设服务网站栏目一般有哪些
  • 安徽元鼎建设工程网站各大网站网址
  • 关于设计网站做网站的绿色背景图
  • 深圳网站建设托管女生适合前端还是后端
  • 制作网站公司谁家好access网站开发
  • 梧州网站推广设计贵州省赤水市代码
  • 电商app系统开发公司wordpress主题优化
  • 黄岛网站建设哪家好风险网站怎么解决方法
  • 网站换程序 搜索引擎oa报表网站开发
  • 谁会在西安做网站的吗阿玛尼高仿手表网站
  • asp是网站开发吗高端品牌的优势
  • 垂直门户网站怎样查网站空间地址
  • html5网站在线制作冷库 东莞网站建设
  • 响应式品牌网站设计seo任务平台
  • 集团门户网站建设策划湖北建设信息网官网
  • 网站建设公司公司哪家好7星彩网站开发
  • 查询公司信息去哪里查seo能干一辈子吗