自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 C++高精度计时方法总结(测试函数运行时间)

此处需要注意的是,这个函数所求的的运行时间并非准确运行时间,不过相对来说比较准确,它的精度和CPU有关,一般精度在16ms左右,由于GetTickCount()返回值以32位的双字类型DWORD存储,所以它的存储最大值是(2^32-1) ms约为49.71天,一旦一个程序运行时间超过这个值,这个数字就会归为0。3、clock() 函数,返回从 开启这个程序进程 到 程序中调用clock()函数 时之间的CPU时钟计时单元(clock tick)数(挂钟时间),返回单位是毫秒。

2024-09-22 18:04:56 305

原创 python-在PyCharm中使用PyQt5

如果 Python 或 Anaconda3安装在其他路径下,或者选择其它路径中的 python.exe 作为 Python Interpreter,可以从 Pycharm ->Settings -> Project -> Python Interpreter 打开配置窗口,从右侧上方 “PythonInterpreter:” 选项框找到 python.exe 的路径。例如,要将 .ui 文件保存在当前 Project 的路径下,则填写 “$ProjectFileDir$ ”;

2024-09-17 22:06:50 1135

原创 线性代数之QR分解和SVD分解

设A是m×n实矩阵,且其n个列向量线性无关,则A有分解A=QR,其中Q是m×n实矩阵,且满足QHTQ=E,R是n阶实非奇异上三角矩阵该分解除去相差一个对角元素的绝对值(模)全等于1的对角矩阵因子外是唯一的.用Schmidt正交化分解方法对矩阵进行QR分解时,所论矩阵必须是列满秩矩阵。还是看上面的式子,再结合第三部分的图,也很容易看出,经过SVD分解以后,要表示原来的大矩阵AA,我们只需要存U,Σ,V三个较小的矩阵的即可。非奇异矩阵的对比:非奇异矩阵(可逆矩阵)行列式不为零,满秩,有唯一逆矩阵和零解。

2024-09-17 16:12:16 1025

原创 深度学习之图像数据集增强(Data Augmentation)

数据增强(Data Augmentation)是一种技术,通过对现有数据进行各种变换和处理来生成新的训练样本,从而增加数据集的多样性和数量。这些变换可以是几何变换、颜色变换、噪声添加等,使模型在训练过程中能够见到更多种类的数据,从而提升模型的泛化能力和鲁棒性。在机器学习和深度学习中,数据的数量和质量对模型的性能至关重要。然而,获取大量标注数据通常既耗时又昂贵。数据增强通过对现有数据进行多种处理,模拟出更多样化 的训练样本,有效解决了数据稀缺的问题。

2024-09-17 15:18:25 439

原创 C++ 获取文件夹下的全部文件及指定文件(代码)

原因: _findnext()第一个参数”路径句柄”,返回的类型为intptr_t(long long),如果定义为long,在win7中是没有问题,但是在win10中就要改为long long或者intptr_t。vs2017版本可以使用C++17,但也需要设置下项目属性:右击项目 -> 属性 -> 配置属性 -> C/C++ -> 常规 -> 语言 -> 编译器语言,然后将编译器语言改为C++17。对于每个文件,我们输出其文件名。如果使用的是更早的C++标准,可能需要使用其他库或方法来实现相同的功能。

2024-09-13 22:26:29 926

原创 OpenCV通过鼠标提前ROI(C++实现)

opencv实现鼠标框选ROI

2024-09-11 22:44:09 549

原创 OpenCV仿射变换和透视变换函数(C++)

透视变换:按照物体的成像投影规律将图像重新投影。常见用例是修正镜头与拍摄目标存在斜角时产生的图像畸变。如果知道目标变换前后的三个像素点坐标之间的关系,即可求出仿射变换矩阵M。旋转变换是仿射变换的一个特殊情况,将此矩阵用于仿射变换函数即可仅作图像旋转。使用getPerspectiveTransform()函数获取变换矩阵。使用warpPerspective()函数应用透视变换。图像的几何变换通常包括拉伸、缩放、扭曲和旋转等操作。注:仿射变换的矩阵M是2×3的矩阵。注:透视变换的矩阵M是3×3的矩阵。

2024-09-09 22:20:10 749

原创 TensorRT模型量化实践

2. onnx导出为tensort engine时可以采用trtexec(注:命令行需加–int8,需要fp16和int8混合精度时,再添加–fp16),比较简单;trtexec 有提供 --calib=接口进行校正,但需要对中间特征进行cache文件保存,比较麻烦,官方文档也是采用上述方式进行int8量化;1.导出onnx时,显存占用非常大;3.量化过程中发现,即使模型为动态输入,校正数据集使用时也必须与推理时的输入shape[N, C, H, W]完全一致,否则,效果非常非常差,动态模型慎用。

2024-09-01 21:18:09 769 2

原创 python-opencv读写图像中文路径的问题

在使用python的opencv库处理图像时,通常使用cv2.imread()函数读取图像,然而如果图像路径包含中文,则会读取失败。对此,需要作以下修改,即可读取中文路径的图像。

2024-08-27 23:07:02 452

原创 非局部均值降噪算法(NLM)原理及实现

在日常生活中,最常见的 CT 图像噪声是高斯白噪声。目前,针对高斯白噪声的处理方法,主要有空间域中的以平滑为基本思想的均值滤波、高斯滤波、局部滤波等,此外还有频率域中的维纳滤波和小波阈值收缩等。局部强度统计特征是衡量区域内像素间的平均相似性,但这一特征难以准确辨别边缘与其邻近点之间的差异,导致了滤波结果中边缘信息的模糊。小波阈值收缩算法虽能够很好地估计信号的噪声,但是阈值和阈值函数的选择上存在不确定性,会造成信号的失真。

2024-08-27 22:16:38 1122

原创 解决内存占用高,看不到进程的问题,亲测可行

运行Poolmon.exe,显示完按P键,再按B键,使Bytes字段按大到小排序,这样可以清楚的看到Bytes比较大的tag标记(比如:SpDN),如下图所示。如果SpDN一直处于增长状态,那么我们可以确定SpDN存在核心内存泄漏,可以通过findstr命令来定位占用SpDN的进程和驱动文件。另外,也可能是内存泄漏导致的,可以尝试PoolMon工具进行分析。解决内存占用高,看不到进程的问题,刚开机内存就快没了,查看进程详细信息,poolmon是一个独立的exe,可以百度搜索poolmon下载,

2024-08-26 22:08:05 1240

原创 先安装CUDA后安装VS的额外配置

通常先装vs后装cuda,cuda会自动集成到vs中。而如果先装cuda,后装vs则需要进行额外的配置。以下教程亲测可行。在此转载以备不时之需。

2024-08-25 11:52:58 442

原创 TensorRT部署模型入门(python&C++)

在安装好tensorrt环境后,可以尝试使用预训练权重进行转化封装部署,运行以下代码!TensorRT安装指南。

2024-08-25 11:42:55 1105

原创 VS2017离线安装教程及激活(含各版本密钥)

开始下载后,会先启动 Visual Studio Installer 的界面,然后会再启动一个显示下载进度日志的命令行。下载完毕后,启动 vs_setup.exe 就可以开始安装了。

2024-08-12 20:56:30 1201

原创 深度学习之基于Pytorch框架的Unet分割模型搭建学习

自2015年诞生以来,U-Net便以其卓越的性能在生物医学图像分割领域崭露头角。作为FCN的一种变体,U-Net凭借其Encoder-Decoder的精巧结构,不仅在医学图像分析中大放异彩,更在卫星图像分割、工业瑕疵检测等多个领域展现出强大的应用能力。U-Net是一种常用于图像分割的卷积神经网络架构,其特点在于其U型结构,包括一个收缩路径(下采样/编码器)和一个扩展路径(上采样/解码器)。这种结构使得U-Net能够在捕获上下文信息的同时,也能精确地定位到目标边界。

2024-07-24 17:50:57 1244

原创 C++使用jsoncpp读取Json文件

1)、json文件JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。2)、json与其他存储数据方式比较(或者说为什么要用json文件呢?

2024-06-06 22:05:14 1257

原创 图像几何变换(仿射变换和透视变换...)及python-opencv实现

至此,已经知道了仿射变换和透视变换的变换矩阵,那在实际应用时该如何求呢?一个方法是直接根据几何参数计算变换矩阵,另外一个方法是通过原始图像坐标和目标图像坐标求解变换矩阵。如下所示为透视变换矩阵的8个方程组。透视变换的矩阵表示如下,我们可以看到它与仿射变换的区别便是最后一行的参数c1和c2的值,对于仿射变换c1=c2=0。透视变换和仿射变换的一个重要区别是:两条平行的线在经过仿射变换之后依然保持平行,但透视变换并不保证这一点。通过透视变换的变换矩阵计算新的坐标,其中a33=1,x’和y’为最终计算的结果。

2024-03-22 18:06:11 1361

原创 图像分割之k-means聚类分割

k-means聚类是一种无监督学习的聚类算法,它的目的是将数据集中的样本划分成若干个类别,使得同一类别内的样本相似度高,而不同类别之间的样本相似度低。X 的行对应于点,列对应于变量。第五步,比较新的质心和老的质心,如果新质心和老质心之间的距离小于某一个阈值,则表示重新计算的质心位置变化不大,收敛稳定,则认为聚类已经达到了期望的结果,算法终止。通过计算相似度(默认欧氏距离),将相似度大的样本聚集到同一个类别,k表示聚成k个类别,means表示每个类别的聚类中心点是通过簇中所有样本点的均值得到。

2024-03-15 15:05:34 2529

原创 CT图像伪影MATLAB仿真

在去金属伪影过程中,为了研究金属伪影的去除方法,需要获取相应的图像。对此,本文采用了MATLAB对该过程进行仿真。获取投影图像,并对金属区域采用如下变换函数,即可得到目标图像。最终的图像如下所示,可以看到金属周围的明暗条纹。如果觉得本文对你有帮助,欢迎一键三连。不进行变换的情况下,直接进行反投影,如有错误,敬请指正!

2024-03-08 17:15:26 518

原创 C++指针的使用及注意事项

我们常说的指针是一个变量,为复合类型(包括数组、字符串、结构等),指针变量实质是指存储了一个内存地址。而变量会有自己的内存空间,所以虽然指针变量代表着另外一个内存地址,但其自身也会有对应的内存空间存储值,从而导致双重指针或多重指针的存在(多级间接寻址)。在计算机中每个变量都有自己的内存位置,并定义了使用地址运算符(&)可以取用的内存地址。即如果var是一个变量,则&var代表它的地址。总之,指针和内存管理是C++编程中非常重要的一部分,需要程序员对其有深入的理解和掌握。

2024-02-21 18:33:41 1163

原创 C++/C函数指针及函数指针数组(指向成员函数的指针)

首先它是一个指针,一个指向函数的指针,在内存空间中存放的是函数的地址。其中,ret为返回值,*p作为一个整体,代表的是指向该函数的指针,args为形参列表。其中p被称为函数指针变量。关于函数指针的初始化与数组类似,在数组中,数组名即代表着该数组的首地址,函数也是一样,函数名即是该数组的入口地址,因此,函数名就是该函数的函数指针。函数指针变量 = 函数名;//例子return a+b;

2024-02-21 11:06:46 1078

原创 C++/Python/MATLAB检查内存使用情况

有时为了对电脑、服务器做运行情况监控,需要获取内存、cpu的使用情况。当处理CT图像数据的时候,由于需要内存较大,因此容易出现内存不足的问题,对此,在处理数据之前预先检查剩余内存是否充足很有必要。以下分别是三种编程语言下的内存检查代码。

2024-02-18 14:45:09 524

原创 C++给应用程序添加图标

给应用程序添加图标

2024-02-01 18:39:01 1085

原创 C++实现图像金字塔下采样和上采样

这不难理解,进行upsample后,图像像素值为0的像素在滤波后其值要和原图一样,该像素的四邻域权重之和应该在0.9左右,其余0.1的部分由其它像素贡献。图像金字塔是对图像的一种多尺度表达,将各个尺度的图像按照分辨率从小到大,依次从上到下排列,就会形成类似金字塔的结构,因此称为图像金字塔。最近在写图像上采样和下采样的C++算法,下采样实现比较容易实现,使用大小5x5和方差为1的高斯滤波核即可得到想要的效果。(2)图像金字塔的下采样之前会对图像进行模糊,上采样后也会进行模糊;

2024-01-31 17:03:51 1223

原创 ITK编译及安装

DICOM图像的读取问题相比于VTK类库中vtkDICOMImageReader类读取DICOM序列图像,借助ITK类库实现对DICOM序列图像的读取要复杂许多。但是,使用ITK类库读取图像不像使用VTK类库那么功能局限,VTK类库对每种图像格式都有着专门的读写类,像vtkDICOMImage-Reader类只能读取普通的DICOM图像,对于压缩后的DICOM图像则只能通过ITK类库来实现读取。

2024-01-24 17:45:25 1141

原创 Qt+Vs踩坑之QString转std::string中文乱码

Qt中字符串存在两种中文乱码的情况:1.Qt内部的编码造成的中文乱码;2.QString与std::string之间转换造成的中文乱码。在无中文的情况下,使用以下方式转换是没问题的。(1)QString 转换成 char *(2)char * 转换成 QString。(3)QString转string。

2023-12-22 08:31:51 1507

原创 CUDA规约求和/最大值

即得到最后结果。如下图所示:值得注意的是,最后的多个规约结果可以拷贝到CPU中计算,也可以在GPU进行计算。在GPU中进行计算时,当规约结果数量小于单个线程块的线程数时,即可得到最终结果。

2023-12-07 15:22:12 1842

原创 C++实现快速高斯滤波

二维方式是根据kernel的大小以及sigma大小生成一个 size*size的卷积核,然后再做卷积。计算量是imgWidth * imgHeight * size * size,但如果用两个一维来替代,则计算量是imgWidth * imgHeight * size * 2,计算量大大减少。看这篇文章的道友想必对高斯滤波已经很熟悉,在此就不进行赘述了,也可以看看参考资料的文章回顾一下。此处的数据类型ImagePro可以根据自己的需求进行定义。

2023-11-28 17:51:55 625

原创 BM3D降噪算法实现

BM3D(Block-matching and 3D filtering,3维块匹配滤波)降噪是芬兰的坦佩雷理工大学(Pampere University of Technology)的Kosadin、Alessandro、Vladimir、Karen等人2007年提出的基于传统方法的图像降噪算法,该方法的去噪性能目前是非AI图像降噪中去噪效果最好的,无愧于state-of-art denoising performance的称号。

2023-11-20 18:21:53 1235

原创 MATLAB常用函数

若参量中不包括任何参数,则默认填充为零且方向为'both'。padval: 'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展;'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。direction : 'pre'表示在每一维的第一个元素前填充;若参量中不包括direction,则默认值为'both'。'post'表示在每一维的最后一个元素后填充;:将double转char。

2023-11-16 08:53:44 246

原创 Qt常见问题记录

头文件中输入#include 后,显示" ‘QTcpSocket’ file not found"。类似的处理还有QChart,对应添加的QT += charts。

2023-11-14 14:23:20 150

原创 Qt控件样式设置

Qt Qwidget 中在进行GUI开发中经常需要对控件进行美化,此时就需要对控件的样式进行修改;1. 在C++代码中通过函数setStyleSheet();2. 在设计师中进行美化;3. 引入QSS文件进行美化;当然,并不拘泥于其中一种方法,有时候会结合三种方法一起使用,但是一般推荐使用QSS文件,或者在设计师中进行美化,代码中尽量少涉及样式美化的工作。

2023-11-09 16:51:04 266

原创 网络编程下的socket编程(TCP\UDP)

UDP不像TCP需要建立永久联系并进行监听,因此客户端和服务端的实现基本都是一样的。其中,服务端需要绑定固定的端口,方便客户端进行连接发送信息。而绑定端口对于客户端是一个可选项, 可以根据自己的需要进行设置。TCP的socket编程的。TCP的socket编程的。UDP的socket编程的。UDP的socket编程的。

2023-11-01 10:20:06 87

原创 Qt初步探索

qt初级问题

2023-11-01 09:25:52 42

原创 C++指针用作函数形参的问题

C++指针用作形参

2023-10-27 09:47:30 45

原创 C++学习网站收藏

C++学习网站

2023-10-25 11:41:36 459

原创 Python安装库加速之pip国内镜像源

pip安装镜像源

2023-10-25 11:35:58 1198

原创 C++编程命名规范

命名规范

2023-10-09 17:08:42 973

原创 C++动态链接库DLL制作

dll文件制作

2023-09-21 13:40:47 309

原创 直方图均衡化以及直方图匹配

图像处理之直方图均衡化、直方图匹配

2023-08-30 22:08:11 1273

jsoncpp源码下载直接使用

jsoncpp源码以及github项目 JsonCpp 是 C++ 中一个常用的第三方 Json 解析库,JsonCpp 是开源以及跨平台的。

2024-06-03

vtk学习资料,VTK图形图像开发进阶及源代码

vtk学习资料: 1.VTK图形图像开发进阶及源代码 2.VTKTextbook 3.VTKUsersGuide

2023-04-25

算法工程师-C++和数学基础知识

C++书籍目录: 1.C++编程规范 2.C++沉思录 3.Effective C++ 4.Primer C++ 5.彻底搞懂C指针 6.程序员的自我修养 数学基础: 1.数值分析 2.数字图像处理第三版 3.统计学习方法 4.泛函分析

2023-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除