第4章 Python 数字图像处理(DIP) - 频率域滤波5 - 二变量函数的傅里叶变换、图像中的混叠、二维离散傅里叶变换及其反变换

目录

    • 二变量函数的傅里叶变换
      • 二维冲激及其取样性质
      • 二维连续傅里叶变换对
      • 二维取样和二维取样定理
      • 图像中的混叠
      • 二维离散傅里叶变换及其反变换

二变量函数的傅里叶变换

二维冲激及其取样性质

两个连续变量的冲激函数定义为:
δ(t,z)={1,t=z=00,others(4.52)\delta(t, z) = \begin{cases} 1, & t=z=0 \\ 0, & \text{others} \end{cases} \tag{4.52}δ(t,z)={1,0,t=z=0others(4.52)
∫−∞∞∫−∞∞δ(t,z)dtdz(4.53)\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} \delta(t, z) \text{d}t \text{d}z\tag{4.53}δ(t,z)dtdz(4.53)

二维冲激在积分下展现了取样性质
∫−∞∞∫−∞∞f(t,z)δ(t,z)dtdz=f(0,0)(4.54)\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t,z) \delta(t, z) \text{d}t \text{d}z\ = f(0, 0) \tag{4.54}f(t,z)δ(t,z)dtdz =f(0,0)(4.54)
一般的情况
∫−∞∞∫−∞∞f(t,z)δ(t−t0,z−z0)dtdz=f(t0,z0)(4.55)\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t,z) \delta(t - t_0, z - z_0) \text{d}t \text{d}z\ = f(t_0, z_0) \tag{4.55}f(t,z)δ(tt0,zz0)dtdz =f(t0,z0)(4.55)

二维离散单位冲激定义为
δ(x,y)={1,x=y=00,others(4.56)\delta(x, y) = \begin{cases} 1, & x=y=0 \\ 0, & \text{others} \end{cases} \tag{4.56}δ(x,y)={1,0,x=y=0others(4.56)
取样性质为
∑−∞∞∑−∞∞f(x,y)δ(x−x0,y−y0)dxdy=f(x0,y0)(4.58)\sum_{-\infty}^{\infty} \sum_{-\infty}^{\infty} f(x,y) \delta(x - x_0, y - y_0) \text{d}x \text{d}y\ = f(x_0, y_0) \tag{4.58}f(x,y)δ(xx0,yy0)dxdy =f(x0,y0)(4.58)

二维连续傅里叶变换对

F(μ,v)=∫−∞∞∫−∞∞f(t,z)e−j2π(μt+vz)dtdz(4.59)F(\mu, v) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t, z) e^{-j2\pi(\mu t + vz)} \text{d}t \text{d}z\tag{4.59}F(μ,v)=f(t,z)ej2π(μt+vz)dtdz(4.59)

f(t,z)=∫−∞∞∫−∞∞F(μ,v)ej2π(μt+vz)dμdv(4.60)f(t, z) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} F(\mu, v) e^{j2\pi(\mu t + vz)} \text{d}\mu \text{d}v\tag{4.60}f(t,z)=F(μ,v)ej2π(μt+vz)dμdv(4.60)

μ\muμvvv是频率变量,涉及图像时,tttzzz解释为连续空间变量。变量μ\muμvvv的域定义了连续频率域

# 二维盒式函数的傅里叶变换
height, width = 128, 128
m = int((height - 1) / 2)
n = int((width - 1) / 2)
f = np.zeros([height, width])
# T 控制方格的大小
T = 5
f[m-T:m+T, n-T:n+T] = 1fft = np.fft.fft2(f)
shift_fft = np.fft.fftshift(fft)
amp = np.log(1 + np.abs(shift_fft))plt.figure(figsize=(16, 16))
plt.subplot(2, 2, 1), plt.imshow(f, 'gray'), plt.title('Box filter'), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 2), plt.imshow(amp, 'gray'), plt.title('FFT Spectrum'), plt.xticks([]), plt.yticks([])# 不同的盒式函数对应的傅里叶变换
height, width = 128, 128
m = int((height - 1) / 2)
n = int((width - 1) / 2)
f = np.zeros([height, width])
T = 20
f[m-T:m+T, n-T:n+T] = 1fft = np.fft.fft2(f)
shift_fft = np.fft.fftshift(fft)
amp = np.abs(shift_fft)
plt.subplot(2, 2, 3), plt.imshow(f, 'gray'), plt.title('Box filter'), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 4), plt.imshow(amp, 'gray'), plt.title('FFT Spectrum'), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

在这里插入图片描述

二维取样和二维取样定理

sΔTΔZ(t,z)=∑m=−∞∞∑n=−∞∞δ(t−mΔT,z−nΔZ)(4.61)s_{\Delta T \Delta Z}(t, z) = \sum_{m=-\infty}^{\infty} \sum_{n=-\infty}^{\infty} \delta(t - m \Delta T, z - n \Delta Z) \tag{4.61}sΔTΔZ(t,z)=m=n=δ(tmΔT,znΔZ)(4.61)

在区间[−μmax,μmax][-\mu_{max}, \mu_{max}][μmax,μmax][−vmax,vmax][-v_{max}, v_{max}][vmax,vmax]建立的频率域矩形之外,函数f(t,z)f(t,z)f(t,z)的傅里叶变换为零,即时,
F(μ,v)=0,∣μ∣≥μmax且∣v∣≥vmax(4.62)F(\mu, v) = 0, \quad |\mu| \ge \mu_{max} 且|v| \ge v_{max} \tag{4.62}F(μ,v)=0,μμmaxvvmax(4.62)
称该函数为带限函数

二维取样定理:
ΔT<12μmax(4.63)\Delta T < \frac{1}{2\mu_{max}} \tag{4.63}ΔT<2μmax1(4.63)

ΔZ<12vmax(4.64)\Delta Z < \frac{1}{2 v_{max}} \tag{4.64}ΔZ<2vmax1(4.64)

或者是:
1ΔT>2μmax(4.65)\frac{1} {\Delta T} > {2\mu_{max}} \tag{4.65}ΔT1>2μmax(4.65)

1ΔZ>2vmax(4.66)\frac{1} {\Delta Z} > {2 v_{max}} \tag{4.66}ΔZ1>2vmax(4.66)

则连续带限函数f(t,z)f(t,z)f(t,z)可由基一组样本无误地复原。

图像中的混叠

def get_check(height, width, check_size=(5, 5), lower=130, upper=255):"""create check pattern imageheight: input, height of the image you wantwidth: input, width of the image you wantcheck_size: the check size you want, default is 5x5lower: dark color of the check, default is 130, which is dark gray, 0 is black, 255 is whiteupper: light color of the check, default is 255, which is white, 0 is blackreturn uint8[0, 255] grayscale check pattern image"""m, n = check_sizeblack = np.zeros((m, n), np.uint8)white = np.zeros((m, n), np.uint8)black[:] = lower  # darkwhite[:] = upper  # whiteblack_white = np.concatenate([black, white], axis=1)white_black = np.concatenate([white, black], axis=1)black_white_black_white = np.vstack((black_white, white_black))tile_times_h = int(np.ceil(height / m / 2))tile_times_w = int(np.ceil(width / n / 2))img_temp = np.tile(black_white_black_white, (tile_times_h, tile_times_w))img_dst = np.zeros([height, width])img_dst = img_temp[:height, :width]return img_dst
# 混叠
img_16 = get_check(512, 800, check_size=(16, 16), lower=10, upper=255)
img_16_show = img_16[:48, :96]
img_6 = get_check(512, 800, check_size=(6, 6), lower=10, upper=255)
img_6_show = img_6[:48, :96]# 16 * 0.95 = 15.2
img_095 = img_16[::15, ::15]
img_095 = np.concatenate((img_095, img_095[:, 3:]), axis=1)
img_095 = np.concatenate((img_095, img_095[:, 3:]), axis=1)
img_095 = np.concatenate((img_095, img_095[:, 3:]), axis=1)
img_095 = np.concatenate((img_095, img_095[3:, :]), axis=0)
img_095 = np.concatenate((img_095, img_095[3:, :]), axis=0)
img_095 = img_095[2:50, 2:98]# 16 * 0.48 = 7.68
img_05 = img_16[::2, ::2]  # 为了显示这里的步长选了2
img_05 = img_05[:48, :96]fig = plt.figure(figsize=(15, 8))
plt.subplot(2, 2, 1), plt.imshow(img_16_show, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 2), plt.imshow(img_6_show, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 3), plt.imshow(img_095, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 4), plt.imshow(img_05, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

在这里插入图片描述

图像重取样和刚插

在图像被取样之前,必须在前端进行搞混叠滤波,但对于违反取样定理导致的混叠效应,事实上不存在事后能降低它的抗混叠滤波的软件。多数抗混叠的功能主要是模糊数字图像,进行降低由重取样导致的其他混叠伪影,而不能降低原取样图像中的混叠。

对数字图像降低混叠,在重取样之前 需要使用低通滤波器来平滑,以衰减数字图像的高频分量。但实际上只是平滑图像,而减少了那些令人讨厌的混叠现象。

def nearest_neighbor_interpolation(img, new_h, new_w):"""get nearest_neighbor_interpolation for image, can up or down scale image into any ratioparam: img: input image, grady image, 1 channel, shape like [512, 512]param: new_h: new image height param: new_w: new image widthreturn a nearest_neighbor_interpolation up or down scale image"""new_img = np.zeros([new_h, new_w])src_height, src_width = img.shape[:2]r = new_h / src_heightl = new_w / src_widthfor i in range(new_h):for j in range(new_w):x0 = int(i / r)y0 = int(j / l)new_img[i, j] = img[x0, y0]return new_img
def box_filter(image, kernel):""":param image: input image:param kernel: input kernel:return: image after convolution"""img_h = image.shape[0]img_w = image.shape[1]m = kernel.shape[0]n = kernel.shape[1]# paddingpadding_h = int((m -1)/2)padding_w = int((n -1)/2)image_pad = np.zeros((image.shape[0]+padding_h*2, image.shape[1]+padding_w*2), np.uint8)image_pad[padding_h:padding_h+img_h, padding_w:padding_w+img_w] = imageimage_convol = image.copy()for i in range(padding_h, img_h + padding_h):for j in range(padding_w, img_w + padding_w):temp = np.sum(image_pad[i-padding_h:i+padding_h+1, j-padding_w:j+padding_w+1] * kernel)image_convol[i - padding_h][j - padding_w] = temp # 1/(m * n) * tempreturn image_convol
# 抗混叠
img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH04/Fig0417(a)(barbara).tif', 0)# 先缩小图像,再放大图像
img_down = nearest_neighbor_interpolation(img_ori, int(img_ori.shape[0]*0.33), int(img_ori.shape[1]*0.33))
img_up = nearest_neighbor_interpolation(img_down, img_ori.shape[0], img_ori.shape[1])# 先对原图像进行5x5的平均滤波,再缩小图像,再放大图像
kernel = np.ones([5, 5])
kernel = kernel / kernel.size
img_box_filter = box_filter(img_ori, kernel=kernel)
img_down_1 = nearest_neighbor_interpolation(img_box_filter, int(img_ori.shape[0]*0.33), int(img_ori.shape[1]*0.33))
img_up_1 = nearest_neighbor_interpolation(img_down_1, img_ori.shape[0], img_ori.shape[1])fig = plt.figure(figsize=(15, 10))
plt.subplot(1, 3, 1), plt.imshow(img_ori, 'gray'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 3, 2), plt.imshow(img_up, 'gray'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 3, 3), plt.imshow(img_up_1, 'gray'), plt.xticks([]), plt.yticks([])plt.tight_layout()
plt.show()

在这里插入图片描述

混叠和莫尔模式

莫尔模式是由近似等间隔的两个光栅叠加所产生的一种视觉现象。

def rotate_image(img, angle=45):height, width = img.shape[:2]if img.ndim == 3:channel = 3else:channel = Noneif int(angle / 90) % 2 == 0:reshape_angle = angle % 90else:reshape_angle = 90 - (angle % 90)reshape_radian = np.radians(reshape_angle)  # 角度转弧度# 三角函数计算出来的结果会有小数,所以做了向上取整的操作。new_height = int(np.ceil(height * np.cos(reshape_radian) + width * np.sin(reshape_radian)))new_width = int(np.ceil(width * np.cos(reshape_radian) + height * np.sin(reshape_radian)))if channel:new_img = np.zeros((new_height, new_width, channel), dtype=np.uint8)else:new_img = np.zeros((new_height, new_width), dtype=np.uint8)radian = np.radians(angle)cos_radian = np.cos(radian)sin_radian = np.sin(radian)# dx = 0.5 * new_width + 0.5 * height * sin_radian - 0.5 * width * cos_radian# dy = 0.5 * new_height - 0.5 * width * sin_radian - 0.5 * height * cos_radian# ---------------前向映射--------------------# for y0 in range(height):#     for x0 in range(width):#         x = x0 * cos_radian - y0 * sin_radian + dx#         y = x0 * sin_radian + y0 * cos_radian + dy#         new_img[int(y) - 1, int(x) - 1] = img[int(y0), int(x0)]  # 因为整体映射的结果会比偏移一个单位,所以这里x,y做减一操作。# ---------------后向映射--------------------dx_back = 0.5 * width - 0.5 * new_width * cos_radian - 0.5 * new_height * sin_radiandy_back = 0.5 * height + 0.5 * new_width * sin_radian - 0.5 * new_height * cos_radianfor y in range(new_height):for x in range(new_width):x0 = x * cos_radian + y * sin_radian + dx_backy0 = y * cos_radian - x * sin_radian + dy_backif 0 < int(x0) <= width and 0 < int(y0) <= height:  # 计算结果是这一范围内的x0,y0才是原始图像的坐标。new_img[int(y), int(x)] = img[int(y0) - 1, int(x0) - 1]  # 因为计算的结果会有偏移,所以这里做减一操作。#     # ---------------双线性插值--------------------
#     if channel:
#         fill_height = np.zeros((height, 2, channel), dtype=np.uint8)
#         fill_width = np.zeros((2, width + 2, channel), dtype=np.uint8)
#     else:
#         fill_height = np.zeros((height, 2), dtype=np.uint8)
#         fill_width = np.zeros((2, width + 2), dtype=np.uint8)
#     img_copy = img.copy()
#     # 因为双线性插值需要得到x+1,y+1位置的像素,映射的结果如果在最边缘的话会发生溢出,所以给图像的右边和下面再填充像素。
#     img_copy = np.concatenate((img_copy, fill_height), axis=1)
#     img_copy = np.concatenate((img_copy, fill_width), axis=0)
#     for y in range(new_height):
#         for x in range(new_width):
#             x0 = x * cos_radian + y * sin_radian + dx_back
#             y0 = y * cos_radian - x * sin_radian + dy_back
#             x_low, y_low = int(x0), int(y0)
#             x_up, y_up = x_low + 1, y_low + 1
#             u, v = np.modf(x0)[0], np.modf(y0)[0]  # 求x0和y0的小数部分
#             x1, y1 = x_low, y_low
#             x2, y2 = x_up, y_low
#             x3, y3 = x_low, y_up
#             x4, y4 = x_up, y_up
#             if 0 < int(x0) <= width and 0 < int(y0) <= height:
#                 pixel = (1 - u) * (1 - v) * img_copy[y1, x1] + (1 - u) * v * img_copy[y2, x2] + u * (1 - v) * img_copy[y3, x3] + u * v * img_copy[y4, x4]  # 双线性插值法,求像素值。
#                 new_img[int(y), int(x)] = pixelreturn new_img
# 混叠和莫尔模式
# 竖线原图
img_lines = np.ones([129, 129]) * 255
img_lines[:, ::3] = 0# 旋转时使用刚内插,产生了混叠
rotate_matrix = cv2.getRotationMatrix2D((int(img_lines.shape[0]*0.5), int(img_lines.shape[1]*0.5)), -5, 1)
img_lines_r = cv2.warpAffine(img_lines, rotate_matrix, dsize=(img_lines.shape[0], img_lines.shape[1]), flags=cv2.INTER_CUBIC, borderValue=255)# 相加后,产生的混叠更明显
img_add = img_lines + img_lines_r
img_add = np.uint8(normalize(img_add) * 255)fig = plt.figure(figsize=(15, 10))
plt.subplot(2, 3, 1), plt.imshow(img_lines, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 2), plt.imshow(img_lines_r, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 3), plt.imshow(img_add, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])# 格子原图
img_check = np.ones([129, 129]) * 255
img_check[::2, ::2] = 0# 旋转时使用刚内插,产生了混叠
rotate_matrix = cv2.getRotationMatrix2D((int(img_check.shape[0]*0.5), int(img_check.shape[1]*0.5)), -5, 1)
img_check_r = cv2.warpAffine(img_check, rotate_matrix, dsize=(img_check.shape[0], img_check.shape[1]), flags=cv2.INTER_CUBIC, borderValue=255)# 相加后,产生的混叠更明显
img_add = img_check + img_check_r
img_add = np.uint8(normalize(img_add) * 255)plt.subplot(2, 3, 4), plt.imshow(img_check, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 5), plt.imshow(img_check_r, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 6), plt.imshow(img_add, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])plt.tight_layout()
plt.show()

在这里插入图片描述

# 印刷采用欠取样时产生莫尔模式效应
img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH04/Fig0421(car_newsprint_sampled_at_75DPI).tif', 0)fig = plt.figure(figsize=(15, 10))
plt.subplot(1, 3, 1), plt.imshow(img_ori, 'gray'), plt.xticks([]), plt.yticks([])plt.tight_layout()
plt.show()

在这里插入图片描述

二维离散傅里叶变换及其反变换

二维DFT
Fu,v=∑x=0M−1∑y=0N−1f(x,y)e−j2π(ux/M+vy/N)(4.67)F_{u, v} = \sum_{x = 0}^{M - 1} \sum_{y = 0}^{N - 1} f(x, y) e^{-j2\pi(u x/M + v y /N)} \tag{4.67}Fu,v=x=0M1y=0N1f(x,y)ej2π(ux/M+vy/N)(4.67)

二维IDFT
f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(ux/M+vy/N)(4.68)f(x, y) = \frac{1}{MN}\sum_{u = 0}^{M - 1} \sum_{v = 0}^{N - 1} F(u, v) e^{j2\pi(u x /M + vy /N)} \tag{4.68}f(x,y)=MN1u=0M1v=0N1F(u,v)ej2π(ux/M+vy/N)(4.68)

上式,u=0,1,2,⋯,M−1u = 0, 1, 2, \cdots, M-1u=0,1,2,,M1v=0,1,2,⋯,N−1v = 0, 1, 2, \cdots, N-1v=0,1,2,,N1x=0,1,2,⋯,M−1x = 0, 1, 2, \cdots, M-1x=0,1,2,,M1y=0,1,2,⋯,N−1y = 0, 1, 2, \cdots, N-1y=0,1,2,,N1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QC4+充电协议_一文看懂各家充电协议!总算彻底理清了

五一小长假马上就要到了&#xff0c;虽说今年的五一小长假是一个长达5天的“Plus”版小长假&#xff0c;但是受到疫情的影响&#xff0c;大多数人还是选择了在家中度过这个假期。既然说到了宅在家里度过这个假期&#xff0c;那么很多人都会选择让手机来陪伴自己度过。虽然最近几…

类图 示例

神州六号飞船是神州飞船系统的一种&#xff0c;它由轨道舱、返回舱、推进舱和逃逸求生塔等组成&#xff1b;航天员可以在返回舱内驾驶飞船&#xff0c;轨道舱由是航天员工作和休息的场所。在紧急的情况下&#xff0c;可以利用逃逸求生塔逃生。在飞船两侧有多个太阳能电池翼&…

bat 命令返回结果_bat教程[284] unzip解压

古树屋Click to follow us(1)unzip命令的简介C:\Users\86137\Desktop>unzip -hUnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Sendbug reports using http://www.info-zip.org/zip-bug.html; see README for details.Usage: unzip [-Z] [-opts[mo…

Framework7:不会Objective-C,也能开发iOS7应用

摘要&#xff1a;Framework7是一款开源的轻量级HTML框架&#xff0c;用来创建混合或有着iOS7原生体验的Web应用。其包含HTML布局、所有基础界面、动画效果、视图以及简单的自定义样式&#xff0c;让你无需修炼Objective-C语言&#xff0c;就可以构建自己的iOS7应用。 Framework…

第4章 Python 数字图像处理(DIP) - 频率域滤波7 - 二维DFT和IDFT的一些性质 - 傅里叶频谱和相角

目录二维DFT和IDFT的一些性质傅里叶频谱和相角二维DFT和IDFT的一些性质 傅里叶频谱和相角 F(u,v)R(u,v)jI(u,v)∣F(u,v)∣ejϕ(u,v)(4.86)F(u, v) R(u, v) jI(u, v) |F(u, v)|e^{j\phi(u,v)} \tag{4.86}F(u,v)R(u,v)jI(u,v)∣F(u,v)∣ejϕ(u,v)(4.86) 幅度&#xff0c;称为…

第4章 Python 数字图像处理(DIP) - 频率域滤波8 - 二维DFT和IDFT的一些性质 - 二维离散卷积定理

目录二维DFT和IDFT的一些性质二维离散卷积定理二维离散傅里叶变换性质的小结二维DFT和IDFT的一些性质 二维离散卷积定理 二维循环卷积表达式&#xff1a; (f⋆h)(x,y)∑m0M−1∑n0N−1f(m,n)h(x−m,y−n)(4.94)(f \star h)(x, y) \sum_{m0}^{M-1} \sum_{n0}^{N-1} f(m,n)h(x…

jmeter中重定向多个正则表达式_2020年jmeter技术实战续集,最新技术全栈,值得收藏

在上一篇&#xff1a;主要介绍线程组、HTTP请求默认值、用户定义的变量、固定定时器的应用场景及实战。以下主要介绍正则表达式提取器、调式取样器(Debug Sampler)、响应断言、HTTP信息头管理器的应用场景及实战。一、正则表达式提取器1、使用场景从请求的响应结果中取到需要的…

[置顶] 均衡音效

[置顶] 均衡音效 1均衡的作用 均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备&#xff0c;通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷&#xff0c;补偿和修饰各种声源及其它特殊作用。具体来说&#xff0c;它的作用如下&#xff1a; &#xff08…

第4章 Python 数字图像处理(DIP) - 频率域滤波9 - 频率域滤波基础、频率域的滤波过程、低通、高通

目录频率域滤波基础频率域的其他特性频率域滤波基础知识频率域滤波步骤小结空间域和频率域滤波之间的对应关系频率域滤波基础 频率域的其他特性 频率域中的滤波过程如下&#xff1a; 首先修改傅里叶变换以在到特定目的然后计算IDFT&#xff0c;返回到空间域 # 频率域中的其…

C# :试玩EventLog

1. 专门创建Source的Log   创建了Source&#xff0c;log显示在 Event viewer/Applications and Services logs/ 自定义Source 中&#xff0c;待遇比较高&#xff0c;专门显示的。 创建Source需要管理员身份&#xff0c;否则Crash。 如果已经打开了 Computer Management,请关闭…

css 宋体_Java前端基础(一)之html/css

1.1 htmlHTML:超文本标记语言(Hyper Text Markup Language)&#xff0c;标准通用标记语言下的一个应用。HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)&#xff0c;是网页制作所必备的WEB开发工具&#xff1a;hbuilder/webstorm/vs code/eclpise最简单…

gpio的8种工作模式_Stm32之GPIO工作模式简介

GPIO的8种工作模式GPIO初始化结构体的时候&#xff0c;必须要配置合适的工作模式&#xff0c;这样才能使得IO口发挥应有的作用。工作模式大体上共分为输入输出两类&#xff0c;共8种&#xff0c;下面将介绍这8种工作模式。GPIO工作模式输入模式GPIO_Mode_AIN 模拟输入 GPIO_Mod…

vagrant,流浪汉,我又来啦。

最近学个DEVOPS2.0&#xff0c;讲微服务&#xff0c;容器华&#xff0c;持续部署&#xff0c;很到位&#xff0c;就一个一个工具撸一撸。。。 vagrant&#xff0c;以前接触过&#xff0c;所以上手快&#xff0c;&#xff0c;哈哈&#xff0c;&#xff0c;用时再具体配置。 virt…

dedecms最新版本修改任意管理员漏洞

此漏洞无视gpc转义&#xff0c;过80sec注入防御。 补充下&#xff0c;不用担心后台找不到。这只是一个demo&#xff0c;都能修改任意数据库了&#xff0c;还怕拿不到SHELL&#xff1f; 起因是全局变量$GLOBALS可以被任意修改&#xff0c;随便看了下&#xff0c;漏洞一堆&#x…

第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

目录使用低通频率域滤波器平滑图像理想低通滤波器(ILPF)高斯低通滤波器(GLPF)巴特沃斯低通滤波器低通滤波的例子使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心的一个圆内无衰减地通过所有频率&#xff0c;而在这个圆外“截止”所有的频率的二维低通滤波…

bluecam连接步骤说明_厂家详解旋片式真空泵使用说明

旋片式真空泵是有区分单双极高速直联结构的真空泵&#xff0c;是用来对密封容器抽除气体的基本设备之一。旋片式真空泵的泵与电机连轴&#xff0c;有着高转速、外型小、结构紧凑、流动性工作方便的优点。本文所使用旋片式真空泵使用说明资料&#xff0c;是台冠真空泵技术团队工…

第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像

目录使用高通滤波器锐化图像由低通滤波器得到理想、高斯和巴特沃斯高通滤波器指纹增强频域中的拉普拉斯钝化掩蔽、高提升滤波和高频强调滤波同态滤波使用高通滤波器锐化图像 由低通滤波器得到理想、高斯和巴特沃斯高通滤波器 HHP(u,v)1−HLP(u,v)(4.118)H_{HP}(u, v) 1 - H_{…

漫步者lollipods如何调节音量_漫步者MF5扩音器体验:老师值得入手

对于教师职业来说&#xff0c;保护好嗓子是很重要的。每天为学生操劳&#xff0c;频繁的讲课&#xff0c;很多老师都遇上了喉咙沙哑的问题。怎么样才能保护好老师的嗓子呢&#xff1f;“小蜜蜂”是很多老师们的选择&#xff0c;这种扩音器可以挂在腰间&#xff0c;通过麦克风&a…

pandas删除某列有空值的行_Python-零基础学习Pandas知识点整理(2)

DataFrame数据的清洗--预处理操作import pandas as pdimport numpy as np#DataFrame数据框行或列的删除#df.drop(labelsNone,axis0,indexNone,columnsNone,levelNone,inplaceFalse,error"raise")#labels 表示需要删除的行或列的标签&#xff0c;多行或多列用列表传入…

第4章 Python 数字图像处理(DIP) - 频率域滤波12 - 选择性滤波 - 带阻

目录选择性滤波带阻滤波器和带通滤波器陷波滤波器选择性滤波 处理特定的频带的滤波器称为频带滤波器 带阻滤波器&#xff1a; 若某个频带中的频率被滤除 带通滤波器&#xff1a; 若某个频带中的频率被通过 处理小频率矩形区域的滤波器称为陷波滤波器 陷波带阻滤波器&#x…