图论算法笔记|04图论建模和Floodfill

1. 图论建模 大多数的时候我们遇到的问题都不会直接说明这是一个图论的问题,然后你需要使用什么方法来解决。大多数的时候是需要我们自己对问题进行抽象,然后将问题建模成一个图论的问题,然后求解。图论的问题求解过程绝大多数还是使用的dfs或者是bfs。不同的是对于不同的问题,我们需要在遍历的……

阅读全文

图论算法笔记|03广度优先遍历

1. 广度优先遍历 在深度优先遍历中,从一个节点出发然后一直递归的去遍历和它相连的节点,也就是说我们是依次遍历完成一个节点的子图。 广度优先遍历不同于深度优先遍历,我们从一个节点出发遍历完和它相连的节点,然后再去遍历和它相连的这些节点相连的节点,就好像是一层层的去遍历完整个图(和二叉树的……

阅读全文

图论算法笔记|02深度优先遍历

1. 遍历的意义 图是一种数据结构,数据结构的作用就是用来将数据进行结构化的存储。然而存储的目的为的是后续高效率的查找。查找这个动作就是需要在数据结构里面进行遍历,所以从这个角度上来看任何的数据结构都应该存在遍历的方式。 对于“图”这种数据结构来说,它可以有深度优先遍历和广度优先遍历两种……

阅读全文

图论算法笔记|01图的存储结构

图是一种表示多对多关系的结构,表示图的数据结构一般有两种形式,一种是邻接矩阵,另一种是邻接表。 1. 邻接矩阵 邻接矩阵,顾名思义,是一个矩阵,它是存储着边信息的矩阵,顶点用矩阵的下标表示。对于一个邻接矩阵M,如果$M(i,j)=1$,则说明顶点$i$和顶点$j$之间存在一条边。 对于无向……

阅读全文

我的2016

0.题外话 回想自己主动写年终总结还是在2012年,果然是人越来越懒了。2016年对我来说应该是比较有转折性的一年。首先对于一个研二到研三的学生来说最重要的恐怕就是秋季校招了。其次在导师公司从2016年3月到2016年6月这段时间基本就是在交接工作(比较消极的话来说就是接手烂摊子(……

阅读全文

DICOM影像中的窗宽窗位

1.为什么有窗宽窗位? 医学图像领域的关键技术窗技术,是CT检查中用以观察不同密度的正常组织或病变的一种显示技术,包括窗宽(window width)和窗位(window level)。由于各种组织结构或病变具有不同的CT值,因此想要显示某一组织结构细节时,应该选择适合观察该组织或病变……

阅读全文

DICOM通信|PDU数据包(2)

DICOM通信-PDU数据包(1)中主要分析了DICOM通信协议的连接协商请求和连接协商应答。 在7个PDU数据包中还有5个数据包,从结构上来看,他们比协议的协商过程要简单明了一些。 这篇博客就来分析下剩下的5种数据包。 博客中使用的是WireShark抓包工具获取到的通信传输数据。 1……

阅读全文

DICOM通信|PDU数据包(1)

DICOM上层协议为DIMSE提供透明的网络数据传输服务,即以上层协议规定的协议数据单元传送接收DIMSE的命令流与数据流。上层协议中制定了上层服务以及协议数据单元(Protocol Data Unit,PDU)。 PDU是处在同一层的对等体用来交换的信息格式,DICOM根据上层服务定义了以……

阅读全文

DCMTK读取DICOM文件

//.h文件 #pragma once class dicomRead { public: dicomRead(void); ~dicomRead(void); private: const char* PatientName; const char* PatientSex; long PatientAge; long Width; long Height; long Depth; long WindowsLevel; long WindowsWidth; double space[2]; double spaceZ; double ImagePosition[3]; double ImageOrientation[6]; unsigned short* buffer; public: const char* GetPatientName(); const char* GetPatientSex(); long GetPatientAge(); long GetWidth(); long GetHeight(); long GetDepth(); long GetWindowsLevel(); long GetWindowsWidth(); double* GetSpace(); double GetSpaceZ(double orientation[6],double position1[3],double position2[3]); double* GetImagePosition(); double* GetImageOrientation(); unsigned short* GetBuffer(); void DicomRead(const char* path); void compressionDicom(const char* path,int repType); void decompressionDicom(const char* path); void readDICOMInfo(const char* path); }; #include "dicomRead.h" #include <map> #include <math.h> #include <iostream> #include <string> #include "dcmtk\config\osconfig.h" #include "dcmtk\dcmdata\dctk.h" #include "dcmtk\dcmdata\dcxfer.h" #include "dcmtk\dcmdata\dctag.h" #include "dcmtk\dcmdata\dctagkey.h" #include "dcmtk\dcmdata\dcpxitem.h" #include "dcmtk\oflog\config.h" #include "dcmtk\dcmimgle\dcmimage.h" #include "dcmtk\dcmjpeg\djdecode.h" #include "dcmtk\dcmjpeg\djdijg12.h" #include "dcmtk\dcmjpeg\djdijg8.h" #include "dcmtk\dcmjpeg\djdijg16.h" #include "dcmtk\dcmjpeg\djencode.h" #include "dcmtk\dcmjpeg\djrploss.h" #include "dcmtk\dcmjpeg\djrplol.h" #include "dcmtk\dcmdata\dcrleerg.h" #include "dcmtk\dcmdata\dcrledrg.h" using……

阅读全文

Flask 学习笔记|11 Python与Flask的结合应用

11.1 重置密码流程分析 重置密码主要流程如下: 其中,发送重置密码邮件后的流程如下: 11.2 first_or_404和可调用对象 1.first_or_404 视图函数接受用户填写的email账号,如果不存在应该跳转到404界面,这个逻辑flask-sqlalchemy为我们提供了良好的封装,不需要手动去处理,只需要调用Q……

阅读全文