自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 观察者模式(observer)用于输出算法的中间过程

前言观察者模式定义对象间的一种一对多的依赖关系,当一个对象(subject,被观察者)的状态发生变化的时候,所有依赖于它的对象(observer,观察者)都会得到通知并自动更新。其中subject类必须的成员:1,vector<Observer*> m_observers;2,add_observer(Observer* observer);3,remove_observer(Observer* observer);4,notify();Observer类必须的成员:1,get_

2020-06-01 14:28:28 366

原创 vscode 打开c_cpp_properties.json的一种方法

步骤1:步骤2:界面上方中心会显示一个下拉菜单,显示三个选项:WIN32编辑配置(UI)编辑配置(JSON)步骤3:点击编辑配置(JSON)结果如下:完成。

2020-05-27 17:06:22 14887 2

原创 Transformer系列论文总结

专栏背景最近的Transformer文章特别的火,朋友圈每几天就有相关的新论文,号称要替换CNN的框架。作为一个AI的工程师,觉得需要把这些比较经典的论文都研究下,所以开设了这个专栏,记录下过程的想法。...

2021-06-23 20:46:48 970 1

原创 YOLOv1-从零到落地

虽然网上有很多YOLO 相关的文章,但是如果要用YOLO直接做一个落地产品,却没有一篇文章可以对每个步骤都进行指导了,为此,本文根据自己的项目经验,结合论文的精度和网络的相关文章,总结一篇可以从零到落地的文章。如有不详细或者遗漏的请在评论区留言,谢谢。原始论文路径:pdf路径讲解比较好的文章:YOLO文章详细解读1,数据标注1,推荐使用LabelImg,支持输出YOLO输出格式,安装教程和使用说明见链接2,医学图像检测框标注工具可以采用3D slice,使用教程见链接数据标注的存储格式如下:d

2021-03-04 11:10:45 317 4

原创 dicom序列转换为体数据(C++完整代码)

对于文件夹中的dicoms序列,需要将之转换为体数据格式,如mhd,nii.gz等格式,ITK有封装好的模块,但是需要自行进行组装。1,需要的头文件包括如下几个:#include "itkGDCMSeriesFileNames.h"#include "itkGDCMImageIO.h"#include <itkImage.h>#include <itkImageFileReader.h>#include "itkImageFileWriter.h"#include "i

2020-12-16 15:00:39 1233

原创 Python for 循环的坑,不能修改i 的值

今天在使用python for 循环的时候,遇到一个万年坑啊。for i in range(1,10,3): print(i) i+=1请问这个的输出结果是什么?错误答案如下:159正确的答案是:147原因就是,这里的for 循环只是遍历range(1,10,3)=[1,4,7]的元素。这个和其他语言不一样。需要修改的i的值可以参考如下博客内容。https://blog.csdn.net/LegenDavid/article/details/50056047...

2020-10-28 15:38:33 5112

原创 ITK配准--Transform 使用的注意事项

1,最简单的方法,直接使用registration->GetTransform()如果配准之前,没有对Transform进行初始化的,则配准之后的registration->GetTransform()可以直接使用,例子如下: using RegistrationType = itk::ImageRegistrationMethodv4<FixedImageType,

2020-09-14 15:40:15 1100 4

原创 ITK 配准中优化器参数的理解和使用

导读ITK配准中,需要设置优化器,如OptimizerAsRegularStepGradientDescent,而这个优化器实例化的时候需要传入相关的参数,其中常用的有如下四个:学习率(LearningRate)这里的学习率指参数更新一次,参数移动的初始步长。以平移变换为例(Tx,Ty),学习率的a,则迭代一次后:Tx += a;Ty += a;最小移动步长(MinimumStepLength)当学习率小于最小移动步长的时候,优化触发结束,配准过程完成。相关因子(RelaxationFac

2020-09-10 17:12:11 587

原创 python 读取pdf的一个比较好用的库 -- pdfplumber

pdfplumber 是按页来处理 pdf 的,可以获得页面的所有文字,并且提供的单独的方法用于提取表格。安装:pip install pdfplumber读取pdf: pdf = pdfplumber.open(R"XXXXXX.pdf")提取每一页的内容:for page in pdf.pages:print(page.extract_text())当前内容为草稿,后续再补上常用的函数和详细的使用例子。...

2020-09-09 17:19:05 1275

原创 Word 内容被锁定的两种解决方法

网络上铺天盖地的解决方案应该是通过审阅->限制编辑;然而,还有一种情况是当前内容被内容控件所管理,而内容控件是可以设置当前控件不可编辑的。这种情况可以通过开发工具,修改属性转换为可编辑状态。 (如何打开开发工具可以bing)。...

2020-08-31 14:40:57 5048

原创 ITK image获取像素值的多种方法(完整代码)

对于图像处理中,对像素进行遍历的处理是基本操作,所以在使用第三方库的时候,如ITK,需要知道如何获取像素的值,才能更好的进行扩展,如添加自定义的滤波等;另一方面,方便将ITK的数据类转换为自己软件定义的数据封装类或者转换为其他库的数据类。结合ITK官方文档提供了两种获取像素的方法和研究ITK源码,我总结出4种方法如下:调用GetPixel 函数(低效率,官方文档)采用迭代器(高效率,官方文档)采用重载()操作符(低效率,源码所得)直接提取内存buffer(高效率,源码所得)调用GetPixel 函数(低

2020-08-19 15:45:43 2369 5

原创 C++ 中 friend声明的友元函数,实现过程依旧无法访问该类的私有属性(完整代码)

例子代码如下:namespace A{class myException : public std::exception{public: friend std::ostream& operator<<(std::ostream& out, const myException& e);}; } // end of namespace A// 实现过程std::ostream&amp

2020-08-17 13:17:16 1772

原创 基于C++和ITK获取2D或3D医学图像的最大连通区域(完整代码)

对于图像处理,如器官分割等,获取最大连通区域常常是后处理的最好一步,用于去除其他误分割的小区域。虽然最大连通区域的算法自己写起来也很快,但是,遵循不重复造轮子的代码风格,本文将记录ITK是如何获取最大连通区域的。最大连通区域的获取1,获取二值化的分割结果mask2, 调用ITK的itkConnectedComponentImageFilter3,调用ITK的itkLabelShapeKeepNObjectsImageFilter4,将Label便签转换为15,保存最大连通区域图像1,获取二值化的分割

2020-08-11 16:55:30 1704 5

原创 itk::Image和libtorch::tensor 互相转换的代码实现

方法一:itk::image 转buffer,然后调用torch::from_blob步骤如下:1,读取图像到itk::Image2,将itk::Image 的数据写入连续的buffer中3,调用libtorch的from_blob函数将buffer的内容转入tensor// read image with itk const char* im_path = "H:\\tmp\\a\\src.mhd"; using ImageType = itk::Image<float,3

2020-08-05 14:16:24 1208 7

原创 使用栈实现汉诺塔求解(C++源码)

汉诺塔的核心就是一句话,要把src的第n个碟子移动到dst,需要三步:1,把n-1个碟子移动到buffer2,把第n个碟子移动到dst3,把buffer中的碟子移动到dst实现的核心代码如下:if(_n > 0){ move(_n - 1, _src, _buffer, _dst); int d = stks[_src].top(); stks[_src].pop(); stks[_dst].push(d); move(_n - 1, _buffer

2020-08-04 17:05:18 1258

原创 C++各种重载操作符(陆续记录中)

取引用和取内容: int& operator*() const {return node->element;} int operator->() const {return &node->element;}前加加和后加加:// increment iterator& operator++() // preincrement {node = node->next; return *this;} iterator operator+

2020-08-03 09:25:05 135

原创 Qt creator 函数注释

/** * internal is algorithm used data,using * float type */ using InternalType = itk::Image<float, 3>;qtcreator 可以添加函数注释模块。只需要输入/** ,在加上回车键。

2020-07-28 10:05:54 2036

原创 3D slicer 十字线不移动的解决办法

按住shift键再移动鼠标,十字线就会根据鼠标的位置进行移动。 Done.

2020-07-27 10:18:46 622 2

原创 ITK BinaryThreshold出来的图像有空洞

背景对于二值化的图像,需要进行高斯平滑,而平滑的最后一步需要将float 类型的图像转换为uchar 的图像,这里需要设置阈值进行二值化。二值化的代码如下 std::cout << "Convert to binary" << std::endl; using FilterType = itk::BinaryThresholdImageFilter<InternalType, MaskType>; FilterType::Pointer filter = Fil

2020-07-15 15:49:15 373

原创 格雷码的位置变化序列

数据结构、算法与应用C++语言描述第一章:26题编写一个C++递归函数,实现输出格雷码的位置变化序列。代码实现:#include <algorithm>#include <iterator>#include<vector>template<typename T>void Func(int n, std::vector<T>& g){ // 基础部分 if (n == 1) { g.push_back(1);

2020-06-28 11:23:33 312

原创 子集生成方法Subset Generation

数据结构、算法与应用C++语言描述第一章:24题编写一个C++递归函数,输入n个元素,输出所有的子集。#include <algorithm>#include <iterator>#include<vector>template<typename T>void Func(std::vector<T>& s, int i, int n){ // 基础部分(终止递归条件) if (n == i) { std::copy

2020-06-28 10:51:10 369

原创 建造者模式(Builder)把肺结节的同类论文算法实现都放到碗里来

前言建造者模式的原始定义如下:The intent of Builder design pattern is to separate the construction of a complex object from its representation. By doing so the same construction process can create different representations.简单的说就是,构造函数传入太多参数了,看着不舒服,所有要模式化。主要的分工如下:1,产品

2020-06-04 09:32:46 188

原创 单例模式(Singleton) C++11版本---没你想的那么简单

前言所谓的单例模式,是指一个类只能实例化一个对象,适用于用代码创建特朗普(世界上只有一个)。常规的实现步骤:class Singleton{private: // 关键静态成员变量 static Singleton* m_self; Singleton();public: // 关键静态成员函数 static Singleton* getInstance();};Singleton* Singleton::m_self = nullptr;Singl

2020-05-29 17:27:37 570

原创 ITK编译报错“C3848 具有类型“const gdcm::dircos_comp”的表达式会丢失一些 const-volatile 限定符”

VS2019编译ITK4.13的时候出现报错,具体的报错信息如下:错误 C3848 具有类型“const gdcm::dircos_comp”的表达式会丢失一些 const-volatile 限定符以调用“bool gdcm::dircos_comp::operator ()(const gdcm::dircos_key &,const gdcm::dircos_key &)” gdcmMSFF C:\Program Files (x86)\Microsoft Visual Studio\

2020-05-27 16:05:40 531

原创 vs code+cmake开发,头文件显示找不到

关于采用vscode 打开cmake配置的c++项目时,头文件夹显示找不到(头文件被红色波纹线标记)。这种情况需要在settings.json中添加一个配置项,使配置的信息来源与cmake“C_Cpp.default.configurationProvider”: “ms-vscode.cmake-tools”或者在设置里面设置:...

2020-05-27 10:51:39 10854 9

原创 Ubuntu 18.04 unknown display 问题的其中一种原因

Ubuntu 18.04 unknown display 问题的其中一种原因最近更新了Ubuntu,界面显示出现了问题:1,显示器分辨率只有1024x768,通过xrander也不能设置;2,双屏幕也不能使用;3,setting->displays显示的设备为Unknown display。一种解决办法网上关于这个问题,有比较多的解决方法,我试过之后还是没有效果,最后决定重新安装驱动。第一种方法是采用cuda安装的时候,默认会安装驱动,结果无效。于是采用 ubuntu最官方的安装方式sud

2020-05-23 19:27:03 6833

原创 半自动安装pytorch1.5

半自动安装pytorch1.5考虑到pytorch 的官网安装很慢,且经常断线。但是,pytorch的完全安装还包括了cudatoolkit、torchvision和更新cuda版本。所以本文提出一种半自动的安装方式。1,先在官网按照命令进行安装,把可以安装的库都先安装完。conda install pytorch torchvision cudatoolkit=10.2 -c pytorch这一步结束之后,其他几个库都会安装完成,剩下pytorch不能安装。2,通过清华的镜像下载对应的版本。h

2020-05-11 10:15:45 1116 6

空空如也

空空如也

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

TA关注的人

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