一:源码

https://github.com/Itseez/opencv/blob/master/samples/python2/coherence.py

def coherence_filter(img, sigma = 11, str_sigma = 11, blend = 0.5, iter_n = 4):h, w = img.shape[:2]for i in xrange(iter_n):print i,gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)eigen = cv2.cornerEigenValsAndVecs(gray, str_sigma, 3)eigen = eigen.reshape(h, w, 3, 2)  # [[e1, e2], v1, v2]x, y = eigen[:,:,1,0], eigen[:,:,1,1]gxx = cv2.Sobel(gray, cv2.CV_32F, 2, 0, ksize=sigma)gxy = cv2.Sobel(gray, cv2.CV_32F, 1, 1, ksize=sigma)gyy = cv2.Sobel(gray, cv2.CV_32F, 0, 2, ksize=sigma)gvv = x*x*gxx + 2*x*y*gxy + y*y*gyym = gvv < 0ero = cv2.erode(img, None)dil = cv2.dilate(img, None)img1 = eroimg1[m] = dil[m]img = np.uint8(img*(1.0 - blend) + img1*blend)print 'done'return img

二:

opencv  mat.reshape c是行优先, matlab 列优先

三:

http://www.rosoo.net/a/201004/9157.html#CornerEigenValsAndVecs

#!/usr/bin/env python'''
Texture flow direction estimation.Sample shows how cv2.cornerEigenValsAndVecs function can be used
to estimate image texture flow direction.Usage:texture_flow.py [<image>]
'''import numpy as np
import cv2if __name__ == '__main__':import systry:fn = sys.argv[1]except:fn = 'data/starry_night.jpg'img = cv2.imread(fn)if img is None:print 'Failed to load image file:', fnsys.exit(1)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)h, w = img.shape[:2]eigen = cv2.cornerEigenValsAndVecs(gray, 15, 3)eigen = eigen.reshape(h, w, 3, 2)  # [[e1, e2], v1, v2]flow = eigen[:,:,2]vis = img.copy()vis[:] = (192 + np.uint32(vis)) / 2d = 12points =  np.dstack( np.mgrid[d/2:w:d, d/2:h:d] ).reshape(-1, 2)for x, y in points:vx, vy = np.int32(flow[y, x]*d)cv2.line(vis, (x-vx, y-vy), (x+vx, y+vy), (0, 0, 0), 1, cv2.LINE_AA)cv2.imshow('input', img)cv2.imshow('flow', vis)cv2.waitKey()
int main (int argc, char** argv)
{cv::TickMeter tm;tm.start();cv::Mat img = cv::imread(argv[1]);cv::Mat gray = cv::Mat();cv::cvtColor(img, gray, CV_BGR2GRAY);// to preserve the original imagecv::Mat flow = gray.clone();int width = img.cols;int height = img.rows;int graySize = width * height;// "brighten" the flow image // C++ version of:// vis[:] = (192 + np.uint32(vis)) / 2for (unsigned int i=0; i<graySize; ++i){flow.data[i] = (uchar)((192 + (int)flow.data[i]) / 2);}cv::Mat eigen = cv::Mat(height, width, CV_32FC(6));cv::cornerEigenValsAndVecs(gray, eigen, 15, 3);// this is the equivalent to all the numpy's reshaping etc. to // generate the flow arrays// simply use channel 4 and 5 as the actual flow array in C++std::vector<cv::Mat> channels;cv::split(eigen, channels);int d = 12;cv::Scalar col(0, 0, 0);// C++ version of:// points =  np.dstack( np.mgrid[d/2:w:d, d/2:h:d] ).reshape(-1, 2)// including the actual line drawing partfor (unsigned int y=(d/2); y<flow.rows; y+=d){for (unsigned int x=(d/2); x<flow.cols; x+=d){if (x < flow.cols && y < flow.rows){cv::Point p(x, y);float dx = channels[4].at<float>(p) * (d/2);float dy = channels[5].at<float>(p) * (d/2);cv::Point p0(p.x - dx, p.y - dy);cv::Point p1(p.x + dx, p.y + dy);cv::line(flow, p0, p1, col, 1);}}}tm.stop();std::cout<<"Flow image generated in "<<tm.getTimeMilli()<<" ms."<<std::endl;cv::imshow("FLOW", flow);cv::waitKey();return 0;
}

图象滤波器 Coherence-enhance shock filter 实现相关推荐

  1. 【 FPGA 】FIR 滤波器结构和优化(一)之滤波器的对称性(Filter Symmetry)

    这部分描述滤波器以及如何在FIR滤波器的IP核设计中优化它们的使用. 滤波器的对称性(Filter Symmetry) 很多滤波器的单位脉冲响应拥有明显的对称性,通常可以利用这种对称性来最小化算术要求 ...

  2. 03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca)

    03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca) 这里介绍了一种简单的SSVEP算法,在实际中有着重要的作用. 文章目 ...

  3. 联合双边滤波器(joint bilateral filter)

    原文地址: 联合双边滤波器(joint bilateral filter) 作者: pplong 前面介绍了双边滤波器(bilateral filter,LBF),然而BF的权值是不稳定的,因此在边缘 ...

  4. 卡尔曼滤波器(THE KALMAN FILTER)的数学原理

    0.内容提要 这篇博客想试图证明卡尔曼滤波器(KALMAN FILTER),即就是说明KF(KALMAN FILTER)和EKF(EXTENDED KALMAN FILTER)算法中的步奏是怎么来的, ...

  5. GEE:实现 Lee 杂波滤波器(Lee speckle filter)降低或去除SAR图像中的杂波(speckle noise)

    作者:CSDN @ _养乐多_ 这段代码实现了一种叫做Refined Lee滤波器的雷达图像处理算法.Lee speckle filter(Lee杂波滤波器)是一种常用的合成孔径雷达(SAR)图像处理 ...

  6. 【 FPGA 】FIR 滤波器之内插 FIR 滤波器(Interpolated FIR Filter)

    内插 FIR 滤波器简写为 IFIR 滤波器,英文名为:Interpolated FIR Filter 内插 FIR 滤波器和传统的 FIR 滤波器有类似的结构,唯一的区别就是将单位延迟替换为了 k ...

  7. 【 FPGA 】半带 FIR 滤波器(Half-band FIR Filter)

    先给出半带 FIR滤波器的一般频率响应: 幅度频率响应关于四分之一采样频率π/ 2弧度对称.采样率归一化为 2π radians/sec,通带与阻带频率的关系为: 通带与阻带波纹相等,这些特征反映在滤 ...

  8. 简谈:电力有源滤波器(Active Power Filter,APF)作用及工作原理

    目录 一.产生背景及原因 二.工作原理 三.总结 一.产生背景及原因 电力系统中非线性负荷大量增加,比如非线性的逆变器.整流器.开关电源等等,由此带来的谐波和无功问题愈来愈严重,俗称谐波污染,这对于电 ...

  9. 卡尔曼滤波器算法(Kalman Filter)—— 数学推导,图文并茂

    (1)HMM:隐变量是离散的 (2)Kalman Filter:又叫 Linear Dynamic Model 或 Linear Gaussian Model 隐变量和观测变量都是连续的,都是服从高斯 ...

最新文章

  1. Spring处理器(Controller)全局建言
  2. 8月18日 | 智能车竞赛云比赛过半,华南赛区成绩小结
  3. java中string类_Java中String类浅谈
  4. 区块链分叉如何解决_什么是分叉区块链又该如何分叉
  5. 深度学习框架Keras介绍及实战
  6. 12个ggplot2扩展包帮你实现更强大的可视化
  7. arduino w5500 mysql,W5500网络模块会出现奇怪的问题
  8. SAP License:更改MM物料基本计量单位
  9. 定时执行sql统计数据库连接数并记录到表中
  10. linux找回cp之前的文件,Linux中找回误删除的文件
  11. C#之 DateGridView分页超简单
  12. 交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现(跟踪场景二)
  13. Fedora 服务启动管理
  14. X-Frame-Options to sameorgin
  15. js生日计算年龄_js 根据出生日期计算年龄
  16. 【​观察】华为云七倍增速背后的关键词:创新、普惠AI、行业赋能
  17. 汇编语言个人笔记(三)mov和add指令及确定物理地址的方法
  18. 赤手空拳如何成就百万富翁?——网络营销之七(第四招:百度文库+QQ群)
  19. Combinatorial Games
  20. 田野调查手记·浮山摩崖石刻(三)

热门文章

  1. 【Xasset谷歌分包】打包AAB并上传谷歌商店操作流程分享
  2. 【日志】20220414
  3. 贵金属解套11.19解锁黄金期货原油实时操作建议指导
  4. %3c?php+eval,callback噩梦:解析著名CMS框架Drupal SQL注入漏洞
  5. C++ 如何让程序暂停一会儿
  6. Python获取代理池和提取可用IP
  7. 如何搭建一个自己的网站
  8. 安霸CV1 SOC芯片
  9. 《魔兽世界》正式发布怀旧服创建人物时间
  10. UI设计要学什么,这份UI学习路线图告诉你