技术标签: Halcon
选择性滤波
在很多应用中,其中感兴趣是处理指定的频段或频率矩形。第一类滤波器分别称为带阻滤波器或带通滤波器。第二类滤波器称为陷波滤波器。
1、带阻滤波和带通滤波
D(u,v)是距离频率矩形中心的距离,D0是带宽的径向中心,W是带宽。一个带同滤波器可以用从低通滤波器得到高通滤波器的相同的方法从带阻滤波器中得到
halcon生成理想带阻带通和高斯带阻带通的代码
read_image (Image, 'D:/halcon work/fft/1.png')
rgb1_to_gray (Image, GrayImage)
get_image_size (GrayImage, Width, Height)
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
gen_bandpass (ImageBandpass, 0.4, 0.5, 'none', 'dc_center', Width, Height)
gen_bandfilter (ImageFilter, 0.4, 0.5, 'none', 'dc_center', Width, Height)
gen_std_bandpass (ImageFilter2, 0.5, 0.1, 'gauss', 'none', 'dc_center', Width, Height)
gen_image_const (Image2, 'real', Width, Height)
paint_region (Image2, Image2, ImageResult1, 1, 'fill')
sub_image (ImageResult1, ImageFilter2, ImageSub1, 1, 0)
2、陷波滤波器
这是一种更加有用的选择性滤波器。它拒绝(或通过)事先定于的关于频率矩形中心的一个邻域的频率。零相移滤波器必须是关于原点对称的,因此,一个中心位于(u0,v0)的陷波在位置(-u0,-v0)必须有一个对应的陷波(或者说 由于傅里叶的周期性,傅里叶频谱上不可能单独存在一个点的噪声,必定是关于远点对称的一个噪声对)。陷波带阻滤波器可以用中心已被平议到陷波滤波器中心的高通滤波器的乘积来构造。一般形式
其中,Hk(u,v)和H-k(u,v)是高通滤波器,它们的中心分别位于,(uk,vk)和(-uk,-vk)处。这些点也是我们要去除的噪声点。这些中心是根据频率矩形中心(M/2,N/2)来确定的。对于每个滤波器,距离的计算由下式执行:
对于陷波带通滤波器照样可以通过从低通得到高通的相同方法得到。
用halcon来构建一个去除摩尔纹的例子
read_image (Image1, 'D:/halcon work/fft/a.jpg')
rgb1_to_gray(Image1, Image)
get_image_size (Image, Width, Height)
optimize_fft_speed (Width, Height, 'standard')
fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
power_real (ImageFFT, PowerSpectrum)
binomial_filter (PowerSpectrum, ImageSmooth, 9, 9)
threshold (ImageSmooth, Region, 128, 100000)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5, 200)
dilation_circle (SelectedRegions, RegionDilation, 3.5)
paint_region (RegionDilation, ImageFFT, ImageFFTFiltered, 0, 'fill')
fft_generic (ImageFFTFiltered, ImageFiltered, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
一.说明部分代码的运用放在以往的教程中,本部分只讲解分页功能.二.前端代码<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebGv2.aspx.cs" Inherits="WebApplication6.WebGv2" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"&g
oracle 导入导出 使用expdp/impdp我的版本11gR2 版本号 11.2.0.1.0 同事的是11gr1 需要指定版本号11.1.0.6.0我装的oracle是11gR2 同事装的是11gR1 用expdp导出 impdp导入 提示版本不兼容错误经查看oracle文档 看到了 这个参数version 最后加oracle版本号 version=1
转自:http://database.51cto.com/art/201407/445438.htmHBase实战(1):数据导入方式作为Hadoop生态系统中重要的一员, HBase作为分布式列式存储, 在线实时处理的特性, 备受瞩目, 将来能在很多应用场景, 取代传统关系型数据库的江湖地位. 本篇博文重点讲解HBase的数据导入, 描述三种方式, Clien
isNotEmpty将空格也作为参数,isNotBlank则排除空格参数1,isNotEmpty(str)等价于 str != null && str.length > 0。2,isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0。同理:1,isEmpty 等价于 str == null || str.length == 0。2,isBl
租酥雨的NOIP2018赛前日记离\(\mbox{NOIP2018}\)只剩下不到一个月的时间辣!想想自己再过一个月就要退役了,觉得有必要把这段时间的一些计划与安排记录下来。就从国庆收假开始吧。2018.10.07下午跟\(\mbox{yyb}\)一起做晚上好题分享的课件。\(\mbox{yyb}\)个毒瘤塞了\(5\)道\(\mbox{Atcoder}\)被阉割成\(3\)道...
一、问题开发web项目过程中,常规的console.log()只是将信息反映在了浏览器的控制台,我们经常需要输出到文本日志文件,以便开发调试和维护排查。下面介绍log4js在vue项目中的部署与使用。二.解决方案1.安装log4j// 注意:如果只执行npm install XXX,没有指定安装到那种环境下的“后缀”,就会发现node-modules中安装了,但是package.json中没有的情况。// 1、保存到开发依赖(devDependencies):npm install
C#周立功CAN卡二次开发心得二次开发说明二级目录三级目录二次开发说明一、整体说明二次开发说明二级目录三级目录二次开发说明最近自学C#,且工作有涉及CAN,就从周立功官网下载了二次开发文档、C#案例。进行改造,以下是相关心得一、整体说明周立功官网提供各种开发环境的案例,如c++、c#,已经写好了开发...
有时候爆破得到服务弱口令本机却连接不上,此时我们就需要用到端口转发左侧的图是msf进行端口转发右侧重新打开一个终端 去连接转发到本地的端口 -u用户名 -p密码...
1.密码为什么要加密传输?防止明文密码在传输过程中被窃取2.密码的加密方式?①对称加密算法②非对称加密算法③散列算法参照详解:https://blog.csdn.net/AinUser/article/details/897638423.撞库、拖库、洗库名词解释撞库:黑客无聊的“恶作剧”,黑客通过收集互联网已泄露的用户+密码信息,生成对应的字典表,尝试批量登陆其他网站后,得...
陈怡暖:2015.5.25早间最强现货黄金白银操作建议 陈怡暖:现任中瀚集团首席分析师,毕业于西南财经大学金融系,国外进修金融专业两年,五年从业经验,知名财经频道分析解说师,各大财经网站专业撰稿人,擅长中短线操作,致力于打造华中地区最诚信分析师,客户提供优质的服务,为每一位投资者提供最专业的贵金属走势分析及业务咨询。我们相互关心、相互信任、相互爱护、相互促进、共同学习、共同成长、实现
最近正好准备想试试利用EKF实现多传感器的融合。但没想到本身ROS里面就已经有EKF的功能包了。这个包用于评估机器人的3D位姿,使用了来自不同源的位姿测量信息,它使用带有6D(3D position and 3D orientation)模型信息的扩展卡尔曼滤波器来整合来自轮子里程计,IMU传感器和视觉里程计的数据信息。 基本思路就是用松耦合方式融合不同传感器信息实现位姿估计。下面来学习一下robot_pose_ekf概要 Robot Pose EKF 包用于评估机器人的3D...
#define _CRT_SECURE_NO_WARNINGS #pragma once#include using namespace std;#include #include //无头单链表typedef struct Node{ Node* _pNext; int _data;}Node, *pNode;//接收二级指针,因为如果接收一级指针的参数,无法改变外