图像低频高频区域分离
来源:互联网 发布:wow mac 大脚插件 编辑:程序博客网 时间:2024/05/01 02:59
简介
本篇整理记录利用小波分离图像的高频、低频部分信息。
具体实现
实现代码参考资料:小波变换 C++ opencv 实现。
小波变换
小波生成和参考资料中一致。小波变换中,首先抽取出原图像的每一行,进行小波分解,获得水平方向的高、低频信息。接着抽取出原图像的每一列,进行小波分解,获得垂直方向的高、低频信息。 生成的对应结果如下:
水平方向 垂直方向
区域分离
如上,我们已经获得了水平、垂直方向的高、低频信息,并保存到了图像中。接着我们首先将这两幅图片都叠加到同一副图像中。结果开运算、高斯滤波和阀值二值化之后,最终获得比较好的分离掩码结果。 对应代码如下:
void picDone(Mat mat1, Mat mat2){ int i, j; IplImage tmp; CvScalar s; float sum = 0; mat2.copyTo(mask); tmp = mask; for(i=0; i< mat2.rows; i++){ for(j=0; j< mat2.cols; j++){ mask.at<float>(i,j) = (mat1.at<float>(i,j) + mat2.at<float>(i,j)) / 2; if((i==0) && (j==0)){ sum = mask.at<float>(i,j); }else{ sum = (sum + mask.at<float>(i,j)) / 2; } } } tmp = mat2; cvZero(&tmp); imshow("mask0", mask); morphologyEx(mask, mat2, MORPH_CLOSE, Mat(5,5,CV_8U), Point(-1,-1), 1); GaussianBlur(mat2, mask, Size(7,7), 0, 0); tmp = mask; for(i=0; i< mask.rows; i++){ for(j=0; j< mask.cols; j++){ s = cvGet2D(&tmp, i, j); if(s.val[0] < sum){ s.val[0] = 0; cvSet2D(&tmp, i, j, s); } } } imshow("mask", mask);}
对应的结果显示如下:
直接叠加 后处理结果
1 0
- 图像低频高频区域分离
- 图像低频高频区域分离
- 图像低频高频区域分离 小波变换
- 图像 高频 低频
- 图像的高频和低频
- 图像的高频与低频
- 理解图像的高频 和 低频
- 图像中的高频分量和低频分量
- 图像中的高频分量和低频分量
- 图像中的高频和低频分量
- 图像中的高频和低频分量
- 图像中的高频分量和低频分量
- 图像中的高频分量和低频分量
- 高频低频
- 理解图像中的高频分量和低频分量
- 对图像高频信号和低频信号的理解
- 对图像高频信号和低频信号的理解
- 如何从频谱图看一副图像的高频和低频成分
- 各种数据库取前几行数据的例子
- android csdn新闻客户端
- code vs 1732 Fibonacci数列 2
- POJ - 3278 Catch That Cow
- Caffe Relu_layer.cpp 学习
- 图像低频高频区域分离
- 网络交换卡
- PAT-1026 程序运行时间
- C++11之基于范围的for循环
- JAVA虚拟机的生命周期
- wget常用选项
- ICPCCamp 2016 Day 7 - Moscow SU Trinity Contest(Hans Zimmer-期望)
- 突破阈限,持续努力
- 系统架构