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

FFT去除规律条纹

一种非常强大的去除图像中规律条纹的工具,前提是你的图像是温和的大尺度结构,如果很多亮的点源,这是不可以的,因为亮的点源附近也是小尺度结构(还有一些是异常坏的数据过于亮,所以也要事先falg掉),本质上是对规律小尺度结构在FFT空间的去除,对去除fast上的扫描效应引起的条纹再合适不过

def FFT_rmstrips(data, flag_data=False):print('FFT_rmstripes_sun')if flag_data:print('自己手动nan掉一下明显的坏数据,这些数据会影响FFT的效果')data[571:626, 507:630] = np.nandata[2375:2429, 2054:2197] = np.nan# 记录NaN的位置#data = data[1500:2000]nan_mask = np.isnan(data)print(f"NaN像素数量: {np.sum(nan_mask)}")# 用0临时填充NaN进行FFT计算data = np.nan_to_num(data, nan=0.0)shape = data.shapeN = shape[1]  #NAXIS1d_theta = 5.d = d_theta / (N-1)scale = 0.05     #影响fft的宽度section =0.06   #the value more big and range of cut-weight more short #scale = 0.5     #影响fft的宽度约小越宽#section = 0.04  #the value more big and range of cut-weight more short fft_data1 = fft.fft2(data)fft_data1_s = fft.fftshift(fft_data1)freq = fft.fftfreq(N, d) freq_s = fft.fftshift(freq)weight = 1 - np.cos(freq_s * scale * np.pi/2.) * np.cos(freq_s * scale * np.pi/2.)weight[np.abs(freq_s)> (1./scale)] = 1.weights_0 = np.zeros_like(fft_data1_s)shape = weights_0.shapefor i in range(shape[0]):weights_0[i] = weight     #行#对权重cut之后的FFTrow = weights_0.shape[0]row1 = int(row*(1-section)/2)row2 = row-row1cut_weights_0 = np.ones_like(weights_0)for j in range(row):if j<=row1 or j>=row2:cut_weights_0[j]  = weights_0[j]cut_fft_data1_s_w = fft_data1_s * cut_weights_0 #i_cut_weights_0 = fft.ifft2(fft.ifftshift(cut_weights_0))cut_fft_data = fft.ifftshift(cut_fft_data1_s_w)cut_data = fft.ifft2(cut_fft_data)cut_data.real[nan_mask] = np.nan   #对那些nan值重复赋值回来check = Trueif check:fig = plt.figure(figsize=(18,18))#ax = fig.add_subplot(321)#ax.imshow(np.abs(np.abs(cut_weights_0 )))#ax.set_title('cut_weight')ax = fig.add_subplot(221)vmin1 = np.percentile(np.abs(fft_data1_s), 5)vmax1 = np.percentile(np.abs(fft_data1_s), 95) ax.imshow(np.abs(fft_data1_s), vmin = vmin1, vmax = vmax1)ax.set_title('fft-data')ax = fig.add_subplot(222)vmin1 = np.percentile(np.abs(cut_fft_data1_s_w), 5)vmax1 = np.percentile(np.abs(cut_fft_data1_s_w), 95) ax.imshow(np.abs(cut_fft_data1_s_w), vmin = vmin1, vmax = vmax1)ax.set_title('cut_fft_data1_s_w*weight')ax = fig.add_subplot(223)vmin1 = np.percentile(data, 5)vmax1 = np.percentile(data, 98)ax.imshow(data, origin='lower',vmin = vmin1, vmax = vmax1)ax.set_title('origin-data')ax = fig.add_subplot(224)ax.imshow(cut_data.real, origin='lower',vmin = vmin1, vmax = vmax1)ax.set_title('cut_data')plt.suptitle('section=%.2f and scale=%.2f' %(section,scale))plt.show()return cut_data.real
http://www.dtcms.com/a/418817.html

相关文章:

  • JAVA中的权限修饰符
  • 前端面试十四之webpack和vite有什么区别
  • 小米路由器 做网站银川森林半岛
  • Kafka04-知识速记
  • 【Linux】高级I/O
  • 开源的容器化平台:Docker高级应用与实战案例
  • 3.7 广域网 (答案见原书 P116)
  • 临淄网站制作首选公司seo排名需要多少钱
  • k8s-部署单master节点
  • Python 2025:量子计算编程的新前沿
  • 二级学院网站建设自评报告互联网营销公司有哪些
  • 做网站滨州现在写博客还是做网站
  • 基于 Service Worker 的图书馆资源缓存技术研究
  • php网站后台验证码不显示哈尔滨教育云平台网站建设
  • 银行门户网站是什么意思网页设计代码中字体的颜色如何改
  • 【代码的暴力美学】-- C语言基础编程题_1
  • Java 架构师系列:JVM 与 AI 负载的优化策略
  • 数据分析-Excel-常用函数
  • Python 文件操作
  • Java 大视界 -- Java 大数据机器学习模型在电商产品销量预测与库存优化管理中的应用
  • 陕西开龄建设网站浙江省建设厅网站如何查安全员
  • 使用 Jenkins 的流水线项目实施 CI/CD
  • 网站建设平台安全问题有哪些方面做网站自动赚钱吗
  • (八)掌握继承的艺术:重构之路,化繁为简
  • 文成做网站国外网站如何做推广
  • 云栖2025 | 阿里云AI搜索年度发布:开启Agent时代,重构搜索新范式
  • 让每次语音唤醒都可靠,公牛沐光重构可观测体系
  • 黄峥的成功之道:重构电商版图的创新密码
  • 数字大健康崛起:艾灸机器人重构就业生态,传统与科技如何共生?
  • 得物笔试题