中值形态小波变换的OpenCV代码

Python OpenCV 车牌定位(纵向定位车牌) 一.原理 查阅了资料,车牌定位方法有数学形态学法,行扫描法,神经网络法,颜色信息法,小波变换法。尝试了数学形态法,但是定位效果不好,效果不稳定,可能是处理图片不够好的问题。于是就尝试了行扫描法,通过车牌区域的灰度跳变点数量来确定车牌的纵向位置。 行扫描法就是通过灰度化,二值化,中值滤波去噪之后对灰度图像进行扫描,然后进行定位。本篇先做了纵向定位,横向定位后续会做。 二.部分代码 for x in ... 阅读详情

///////////////////////////////////////////////////////////////////////////////

//-MWT.H

#pragma once

#include "cv.h"
#include "highgui.h"

using namespace cv;

Mat MWT(Mat img,int nlevs)
{
 int halfH = img.rows/2;
 int halfW = img.cols/2;

 Mat img64f;
 img.convertTo(img64f,CV_64F);

 Mat temp = Mat(img.rows,img.cols,CV_64F,Scalar::all(0));

 for(int n=nlevs;n>0;n--)
 {
  for(int i=0;i<halfH;i++)
  {
   for(int j=0;j<halfW;j++)
   {
    //结构元素B
    double b11 = img64f.at<double>(2*i,2*j);
    double b12 = img64f.at<double>(2*i,2*j+1);
    double b21 = img64f.at<double>(2*i+1,2*j);
    double b22 = img64f.at<double>(2*i+1,2*j+1);
    
    double M = (b11+b12+b21+b22)/4;
    double Yh = M-0.5*(b11+b12);
    double Yv = M-0.5*(b11+b21);
    double Yd = M-0.5*(b11+b22);
    
    temp.at<double>(i,j) = M;
    temp.at<double>(i,j+halfW) = Yh;
    temp.at<double>(i+halfH,j) = Yv;
    temp.at<double>(i+halfH,j+halfW) = Yd;
   }
  }
  img64f = temp.clone();
  halfW = halfW/2;
  halfH = halfH/2;
 } 
 return temp;
}
////////////////////////////////////////////////////////////////////////////

// IMWT.H

#pragma once

#include "cv.h"
#include "highgui.h"
using namespace cv;

// 功能计算法x的n次方
template <class T>
T power( T x, int m)
{
 int i;       //循环次数
 T p=1;   //存放结果
 for (i=1;i<=m;i++)
  p=p*x;
 return p;
}

Mat IMWT(Mat img,int nlevs)
{
 // 临时矩阵,用于存储矩阵数据
 Mat temp = Mat(img.rows,img.cols,CV_64F,Scalar::all(0));
 
 int p = power(2,nlevs);
 int iw = img.cols/p;
 int ih = img.rows/p;

 for(int n= nlevs;n>0;n--)
 {
  // 获得尺度信号的宽和高
  for(int i=0;i<ih;i++)
  {
   for(int j=0;j<iw;j++)
   {
    double m = img.at<double >(i,j);
    double h = img.at<double >(i,j+iw);
    double v = img.at<double >(i+ih,j);
    double d = img.at<double >(i+ih,j+iw);

    double  rm = -(h+v+d);
    double  rh = -(h-v-d);
    double  rv = -(v-h-d);
    double  rd = -(d-h-v);

       temp.at<double>(2*i,2*j) = m+rm;
    temp.at<double>(2*i,2*j+1) = m+rh;
    temp.at<double>(2*i+1,2*j) = m+rv;
       temp.at<double>(2*i+1,2*j+1) = m+rd;
   }
  }
  iw = iw*2;
  ih = ih*2;
  for(int i=0;i<iw;i++)
  {
   for(int j=0;j<ih;j++)
   {
    img.at<double>(i,j) = temp.at<double>(i,j);
   }
  }
 }
 temp.convertTo(temp,CV_8U,1.0,0.0);
 return temp;
}

////////////////////////////////////////////////////////////

#include "MWT.h"
#include "IMWT.h"
#include <iostream>


int main()
{
 Mat img = imread("zoneplate.png",0); 
 namedWindow("zoneplate",1);
 imshow("zoneplate",img);

 Mat imgdec = Mat(img.rows,img.cols,CV_64F);
 int nlev = 3;
 imgdec = MWT(img,nlev);

 Mat imgdec8u;
 imgdec.convertTo(imgdec8u,CV_8U);
 namedWindow("imgdec",1);
 imshow("imgdec",imgdec8u);

 Mat  imgrec = Mat(img.rows,img.cols,CV_8U,Scalar::all(0));
 imgrec = IMWT(imgdec,nlev);
 namedWindow("imgrec",1);
 imshow("imgrec",imgrec);

 subtract(img,imgrec,img);
 Scalar s = mean(img);
 std::cout<<s.val[0];

 waitKey();
 return 0;

}

 

 

#include "MWT.h"
#include "IMWT.h"
#include <iostream>

 


int main()
{
 Mat img = imread("zoneplate.png",0); 
 namedWindow("zoneplate",1);
 imshow("zoneplate",img);

 Mat imgdec = Mat(img.rows,img.cols,CV_64F);
 int nlev = 3;
 imgdec = MWT(img,nlev);

 Mat imgdec8u;
 imgdec.convertTo(imgdec8u,CV_8U);
 namedWindow("imgdec",1);
 imshow("imgdec",imgdec8u);

 Mat  imgrec = Mat(img.rows,img.cols,CV_8U,Scalar::all(0));
 imgrec = IMWT(imgdec,nlev);
 namedWindow("imgrec",1);
 imshow("imgrec",imgrec);

 subtract(img,imgrec,img);
 Scalar s = mean(img);
 std::cout<<s.val[0];

 waitKey();
 return 0;

}

 

 

 

 

形态学图像处理:从基础操作到实战应用 形态学图像处理是计算机视觉中的基础技术,通过结构元素与图像的交互实现特征控制。其核心原理基于腐蚀、膨胀等原子操作,可组合出开运算、闭运算等高级操作。这些技术在图像去噪、边缘检测、特征提取等场景展现出独特价值,特别是在OCR字符识别、医学图像分析等专业领域。结构元素的选择直接影响处理效果,常见的有矩形、圆形和十字形。与传统边缘检测相比,形态学梯度具有更好的抗噪性和计算效率。在工程实践中,形态学常与深度学习、小波变换等技术结合,在车牌识别、细胞分割等场景中发挥关键作用。 阅读详情

相关推荐

【目标检测】OpenCV中实现火焰检测

此外,火焰检测是一个复杂的任务,特别是在动态环境和不同的光照条件下,因此可能需要更高级的算法和技术来提高准确性和鲁棒性。在一些复杂的场景下,可能还需要进行算法的融合和优化,以达到最佳的检测效果。:火焰具有独特的纹理特征,可以使用Gabor滤波器或其他纹理分析技术来提取火焰纹理,然后通过阈值或分类器来识别火焰区域。:火焰在频域中表现出特定的特征,可以通过傅里叶变换或小波变换等方法分析图像的频域特征,从而辅助火焰检测。:火焰的运动具有一定的方向性和速度,可以通过光流法来跟踪火焰的运动轨迹,进而识别火焰区域。

G_redsky的博客 3144

形态Haar小波的OpenCV代码

//////////////////////////////////////////////////////////////////////// //-正变换,放在头文件中 #pragma once #include "cv.h" #include "highgui.h" using namespace cv; Mat MWT(Mat img,int nlevs) {  int half...

windydreams的专栏 1444

【OpenCV】图像的形态学操作|腐蚀|膨胀|Canny边缘检测

卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是 1,那么中心元素就保持原来的像素值,否则就变为零。高斯白噪声中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。这是考查一个信号的两个不同方面的问题。*廓,当到达轮廓的端点时,该算法就在N1[i,j]的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在N1[i,j]中收集边缘,噪声的分类和该噪声的分布符合什么模型有关,常见的噪声有高斯白噪声、椒盐噪声、泊松分布噪声、指数分布噪声等。

小秋 AI SLAM 入门实战教程 1001

matlab对函数进行多尺度连续小波变换(CWT)变换

参考链接: Matlab小波工具箱的使用1:http://blog.sina.com.cn/s/blog_6163bdeb0102dw6k.html Matlab小波工具箱的使用2:http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html Matlab小波工具箱的使用3:http://blog.sina.com.cn/s/blog_6163bd...

u010256887的博客 2万+

OpenCV中的小波变换实践指南

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,广泛应用于计算机视觉领域。它拥有超过2500个优化算法,这些算法涵盖了从基本图像处理到高级计算机视觉技术的方方面面。OpenCV不仅支持常见的编程语言,如C++, Python, Java等,还能够在多种操作系统上运行,如Windows, Linux, macOS, Android, iOS等。

weixin_42522857的博客 686

图像处理与小波变换在VC++中的应用

本文还有配套的精品资源,点击获取 简介:图像小波变换是数字图像处理的核心技术之一,它通过小波理论将图像分解为不同频率的成分,并进行多层分解以提取图像特征。在VC++环境下实现小波变换需要了解小波分析基础、二维小波变换原理、图像分解层次、小波系数处理、逆小波变换、以及如何在VC++中使用库函数处理图像。本课程将通过案例讲解和代码实践,帮助开发者在VC++中高效实现图像小波变换...

weixin_33480380的博客 1260

python的opencv操作记录(八)——小波变换

小波变换的概念,一般逻辑和例子

新兴IT民工的专栏 3997

基于C++与小波变换的人脸表情识别系统(含表情库)

简介:本文介绍了一个使用C++结合小波变换技术实现的人脸表情识别系统,涵盖从图像特征提取到表情分类的完整流程。小波变换因其在时频域上的局部化优势,被用于高效提取人脸局部纹理变化特征,如皱纹、嘴角形态等关键表情指标。项目集成OpenCV库实现人脸检测(如Haar、LBP、HOG)、图像预处理与小波分析,并采用机器学习方法(如SVM或神经网络)进行表情分类。压缩包内含标注好的人脸表情数据库,支持模型训练与验证。该系统展示了C++在高性能计算机视觉任务中的应用潜力,适合作为人工智能与图像处理领域的实践参考。

weixin_42360846的博客 935

OpenCV--028:图像去噪声

图像去噪 图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。 噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。 图像去噪可以分为以下几类: 1)空间域滤波 空间域滤波是在原图像上直接进行数据运算,对像素的灰度值进行处理。常见的...

WaitFoF 2735

非线性小波变换源代码

非线性小波变换源代码(包括Harr 小波S变换,形态学小波变换等)

图像小波变换matlab代码-MS-DCSNet-Release:多尺度深度压缩传感网络,IEEEInter。Conf。视觉通讯图像处理。(V

图像小波变换matlab代码多尺度深度压缩传感网络 抽象的 通过联合学习采样和恢复,基于深度学习的压缩感测(DCS)在性能和运行时间减少方面已显示出显着改善。 但是,其重建图像会损失高频内容,尤其是在低子速率下。 可以理解,这是由于捕获到采样矩阵中的低频信息相对较多。 这种行为在多尺度采样方案中也类似,该方案也对更多的低频分量进行采样。 本文提出了一种基于卷积神经网络的多尺度DCS(MS-DCSNet)。 首先,我们使用基于多尺度的小波变换来转换图像信号。 然后,通过卷积逐个比例地捕获信号。 最初的重建图像可以直接从多尺度测量中恢复。 利用多尺度小波卷积来提高最终重建质量。 网络学会了在采样和重建中执行多尺度,从而获得更好的重建质量。 执行 这是使用DagNN网络由MatconvNet [1]实现的测试源代码。 训练有素的CSNet [2]来自[3],MWCNN来自[4,5]。 此实现源自[6,7]。 结果 第5集 网络 MS-CSNet1 MS-CSNet2 MS-DCSNet3 速度 信噪比/ SSIM 信噪比/ SSIM 信噪比/ SSIM 信噪比/ SSIM 0.1 32.30

图像形态S+P变换的OpenCV代码

// _MWT_H_ #pragma once #include "cv.h" #include "highgui.h" using namespace cv; Mat MWT(Mat img,int nlevs) {  int ih = img.rows;  int iw = img.cols;  int ih_h = ih/2;  int iw_h = iw/2;  img.conver...

windydreams的专栏 1012

形态小波分解与重构

使用形态小波对图像进行多尺度分解和完全重构!

【图像检测】基于形态学实现植物叶片面积和周长测量matlab代码

1 简介 植物的叶片外形特征是传统识别植物常用和重要的形态特征,是人们认识和识别万千植物的基础和出发点。叶片和植物的繁殖器官比较,其具有非常多的优点,常作为识别特征和人们认识植物的主要参照器官。叶片形态特征是研究植物物种变异和分化的一个非常好的指标。结合图像处理技术,提取植物叶片的特征是行之有效的方法。对植物叶片进行参数测量,首先必须得获取叶片的图像,然后对其进行预处理,最后再进行参数特征提取并测量。所以,本章是第4章的基础,也就是说如何获取好的叶片图像是整个参数测量过程的基础。而预处理是关键,预处理的好

m0_60703264的博客 1638

OpenCV3 小波变换

借鉴网上前辈代码,用OpenCV3写的小波变换,如有错误,请各位大神批评指正。

opencv实现小波变换

在VC++6.0和opencv1.0版本基础上实现小波变换

Opencv源码目录表

Opencv源码目录表Opencv源码 Opencv源码 https://github.com/opencv 主要包含下面: https://github.com/opencv/opencv https://github.com/opencv/opencv_contrib https://github.com/opencv/opencv-python https://github.com/opencv/open_vision_capsules ...

嵌入式与人工智能 707

原生H5如何优雅拦截浏览器返回事件:全面屏侧滑退出的解决方案

本文深入探讨了在原生H5中如何优雅地处理浏览器返回事件,特别是针对全面屏手机侧滑返回手势的解决方案。核心是利用HTML5 History API,通过`history.pushState`方法在历史栈中插入记录,并监听`popstate`事件,从而实现在用户侧滑时平滑关闭全屏预览层而非直接退出页面,有效提升了移动端H5应用的原生交互体验。

i0j1k2l3m的博客 270

人工智能专业-基于机器视觉的红枣纹理检测- OpenCV

毕业设计-基于机器视觉的红枣纹理检测- OpenCV :纹理普遍存在于我们的客观世界里,其直观意义十分清晰,它可以反映物体表面或结构的基本属性,而且已经逐渐发展成为计算机视觉研究中的一个重要研究课题。在图像处理中,纹理的概念广泛而且模糊,到目前为止还没有一个定义被广泛接受。一般认为,纹理是图像色彩或灰度在空间上的重复或变化,对于随机纹理,它也具有统计学上的意义。纹理研究引起了国内外专家学者的广泛关注和浓厚的研究兴趣,其算法和应用领域也多种多样,目前主要集中在遥感、医学的图像分析,动、静态目标识别,工业检测,

Hai_Lang_IT的博客 1508

IEEE投稿完整流程——以IEEE Transactions on Cybernetics为例【附:论文格式模板】

前言 以下是官方的流程,包括了论文的格式和提交的流程,重要!重要!重要! 在IEEE的官网中,也有论文提交的文件 可以直接参考: 中文版: 作者指南 英文版: Manuscripts-Author-Guide 作者指南的版本指导流程可能和最新版的官网不一致!!! 或者在下面的链接中,按照你的论文类型,选择不同的论文模板: IEEE article template 以下以IEEE Transactions on Cybernetics 为例子 IEEE Transactions on Cyberne

XC___XC的博客 10万+

已过tiktok校招客户端,面经分享

面试的话, 一天面完3面, 效率很高, 三天之后就发了offer 字节邮件里面也说了不能泄露面试题, 那我就把我秋招参与美团,字节,腾讯,阿里面试被问到的全部问题总结着写出来了, 这其实是我每一轮面试完之后我都会总结哪里答对了, 哪里没有答对, 总结了一大堆问题出来. 答案未必正确, 我只是给自己写了个简单的一句话概括, 可能不够完善, 建议看官自行回答一下这些问题 二本非科班, 暑假在字节实习过, 不过不是tiktok部门, 因此秋招就没啥时间准备面试了, 只投了几个大厂, 顺便也在字节跨部门转正,

a1472750149的博客 1308
上一篇: Chanda形态小波分解的opencv代码
下一篇: 关于离散小波框架变换以及多孔算法(a trous)的学习感悟
风的心愿
博客等级 码龄15年 68粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风的心愿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值