分类 图像处理 中的文章

谈谈OpenCV中的四边形

首先抛出一个问题,给定一系列二维平面上的的点,这些点是可以组成一个封闭的二维图形。因为这些点是矩形区域拍摄图像后识别得到的图形的边界点,所以我们要抽象出来这个矩形,也就是我们要反映出这个矩形。问题是在拍照的时候摄像头可能不是正对着图形的,那么矩形就必然在图像上反映为一个四边形, 如……

阅读全文

PyQt5+OpenCV多线程显示摄像头数据

pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。pyqt5很大的优势就是跨平台,而且使用起来非常的方便,编写的代码比较精简,又能实现比较复杂的界面。在很多视觉程序中都需要GUI, 搭配OpenCV, pyqt5可方……

阅读全文

集装箱OCR:使用EAST和Tesseract

本篇文章主要记录下使用EAST和Tesseract做自然场景中集装箱上字符OCR的一个简单的实现。 在看具体问题之前先来谈谈自然场景中文本检测这个领域。自然场景的文本检测和识别一直以来都是一个比较难的问题,在深度学习走红之前,都是绞尽脑汁的变着法子提取有用的特征,然后做定位检测。得……

阅读全文

Android平台使用JNI方式调用OpenCV配置

本文主要介绍 OpenCV3.4.2 在 android studio2.3 中的配置,并使用 JNI 方式调用 OpenCV 中 C/C++ 层函数。 Android Studio在2.2版本更新之后加入了CMAKE方式配置NDK的方法,这大大简化了之前通过Android.mk和Application.mk两个本地配置文件进行NDK开发的方式。这种方法在后续更新的版本中不断增强,越来……

阅读全文

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……

阅读全文

OpenCV最大熵分割

1. 最大熵是什么? 这里所说的熵是指信息熵,信息熵是来自于信息论的一个词,它是对系统所含信息的一种度量。通俗的讲,系统的不确定性越大,那么系统的信息熵就越大。反之,一个系统如果确定性高(系统越有序),那么整个系统的信息熵就越小。其数学定义表述如下: $$ H = -\int_{\-\infty}^{+\infty}p(x)log[p(x)]dx $$ 上式中,$p(x)$ 表示灰……

阅读全文

OpenCV最大间方差分割

OpenCV中其实有对OTUS算法的实现,threhold()函数最后一个参数可以指定使用OTUS算法。 1、最大间方差(OTUS)算法的描述 和均值迭代算法相似,OTUS算法也是利用图像的直方图进行的。OTUS算法的思想是选取一个阈值$T, T \in [0,m-1]$,$m$为图像的灰度级……

阅读全文