图像处理

使用OpenCL提升OpenCV图像处理性能 | speed up opencv image processing with OpenCL

为君一笑 提交于 2019-11-28 15:08:37
本文首发于个人博客 https://kezunlin.me/post/59afd8b3/ ,欢迎阅读最新内容! speed up opencv image processing with OpenCL <!--more--> Guide OpenCL is a framework for writing programs that execute on these heterogenous platforms. The developers of an OpenCL library utilize all OpenCL compatible devices (CPUs, GPUs, DSPs, FPGAs etc) they find on a computer / device and assign the right tasks to the right processor. Keep in mind that as a user of OpenCV library you are not developing any OpenCL library. In fact you are not even a user of the OpenCL library because all the details are hidden behind the transparent API

图像处理-01-加载图像文件

情到浓时终转凉″ 提交于 2019-11-28 11:31:10
/*--> */ /*--> */ 加载图像文件 public Form1() { InitializeComponent(); this.pbImage.SizeMode = PictureBoxSizeMode.Zoom;//图像大小按原有比例增大或缩小以适应PictureBox的长宽 } private void btnOpen_Click( object sender, EventArgs e ) { OpenFileDialog openImage = new OpenFileDialog(); openImage.Title = "请打开图像文件";//弹出对话框的标题 openImage.Filter = "(图像文件)*.bmp;jpg;jpeg;gif;png|*.bmp;*.jpg;*.jpeg;*.gif;*.png";//打开文件对应的格式 openImage.InitialDirectory = @"D:/";//设置对话框显示的初始目录为C盘 openImage.FilterIndex = 1; openImage.RestoreDirectory = true;//在关闭对话框前还原当前目录 if (openImage.ShowDialog() == DialogResult.OK) { txtImageFilePath.Text =

滤波器—学习笔记

丶灬走出姿态 提交于 2019-11-28 08:12:24
文章目录 空间滤波 中值滤波(Median Filter) 自适应中值滤波器(Adaptive Median Filter) 均值滤波 算术均值滤波器(Arithmetic Mean Filter) 盒状滤波器 加权的均值滤波器 非线性均值滤波器 几何均值滤波器(Geometric Mean Filter) 谐波均值滤波器(Harmonic Mean Filter) 逆谐波均值滤波器(Contra-Harmonic Mean Filter) 参考资料 空间滤波 一个滤波器就是在选定的领域像素上执行预定义好的操作产生新的像素,并用新的像素替换掉原来像素形成新的图像。 一个空间滤波器包括两个部分: 一个领域,滤波器进行操作的像素集合,通常是一个矩形区域 对领域中像素进行的操作 通常可以将滤波器称之为核(kernel)、模板(template)或者窗口(window)。 根据预定义的操作,可以将滤波器分为: 线性滤波器 非线性滤波器 根据滤波器最终对图像造成的影响,可以将滤波器分为: 平滑滤波器,通常用于模糊图像或者去除图像中的噪声。 锐化滤波器,突出图像中的边缘细节部分。 中值滤波(Median Filter) 分类 非线性滤波器 原理 选择待处理像素的一个领域中的各像素值的中值来代替待处理的像素。 功能 消除孤立噪声点(像素的灰度值与周围像素比较接近),特别是椒盐噪声。 优点

从DICOM开始入门医学图像处理-1-开发工具

六月ゝ 毕业季﹏ 提交于 2019-11-27 15:01:49
前言 前一段时间接触了一个项目,主要是开发一个PC客户端,实现DICOM格式的医学影像的浏览和一些简单的处理,因此了解了一些医学影像方面的东西,分享出来供大家参考. 背景介绍 PACS系统 PACS系统是Picture Archiving and Communication Systems的缩写,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟,DICOM,网络)以数字化的方式海量保存起来,当需要的时候在一定的授权下能够很快的调回使用.简单的来讲,在使用PACS的医院,所有的影像学检查产生的图片都会上传到PACS服务器上,以统一的文件格式保存,在影像检查设备的工作站上安装有PACS客户端,他负责向服务器上传新产生的文件,或者胸PACS上调取某些图片,同时,PACS客户端一般都集成了简单的图像浏览功能,有些高级的甚至带有辅助诊断和编辑功能. DICOM DICOM是PACS系统所采用的文件存储协议.目前最新标准为DICOM3.0,以 DICOM形式存储的档案中包括影像资料,病人的基本信息,检查所用的仪器的信息等 工具推荐 比较好获得的DICOM查看器有 Pmsdview 和 RadiAnt 等,其中, RadiAnt是一个小巧且强大的软件

从DICOM开始入门医学图像处理-3-DICOMDIR文件解析

本小妞迷上赌 提交于 2019-11-27 15:00:56
前言 上一篇文章给出了VTK+V+QT的安装方法,其余的两个库,也就是ITK和DCMTK的安装很简单,有一定的CMake使用经验就能很容易的成功编译出我们需要的库.这篇文章主要讲DICOM文件档案的存储形式. DICOM档案存储形式 DICOM图像有三种常见的存在形式: ①单独存储 这种形式就是只有一张单张的医学图像,没有任何其他的文件,也没有与这张图片同属一次扫描序列的其他图片文件. ②混合存储 这种情况指的是一份档案中包含了多个病人和多个序列的图像,并且带有配套的DICOMDIR文件,但是这多个病人和多个序列的图像混在一起存放,不借助其他软件的情况下凭肉眼根本无法分辨出哪些图片是属于同一个病人的. ③分层存储 这种情况指的是一份档案中包含多个病人和多个序列的图像,并带有配套的DICOMDIR文件,但是这些图片是按照一定规律分层存放的,如果看明白这种规律,我们很容易就能不借助任何软件便分辨出哪些图片是连续的一次扫描,哪些图片是属于同一个病人. DICOMDIR文件中存储了什么 DICOMDIR文件存储了这一份DICOM档案的各种信息,我们可以通过DCMTK的函数打开这个文件并输出成文本文件,来观察其中存储了什么 DcmDicomDir dicomdir( "DICOMDIR文件的路径" ) ; std ::filebuf fb ; fb .open ( "DicomDir.log

图像算法——形态学滤波(待完善)

隐身守侯 提交于 2019-11-27 03:11:01
形态学通常表示生物学的一个分支,研究动植物的形态和结构。图像中的形态学是数学形态学。简单来讲就是基于形状的一系列图像处理操作。 基本运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度。 膨胀与腐蚀 功能: 消除噪声; 分割出独立的图像元素,在图像中链接相邻的元素; 寻找图像中明显的极大值和极小值区域; 求图像的梯度; 膨胀 求局部最大值的操作。 核可以是任何形状,有一个单独定义的参考点,锚点。 膨胀就是计算核覆盖的区域的像素点的极大值,把这个极大值赋值给参考点指定的像素,使图像的高亮区域逐渐增长。 函数:void dilate 腐蚀 与膨胀相反,求局部最小值的操作。 函数:void erode 开运算、闭运算、形态学梯度、顶帽、黑帽 形态学的高级形态,都是建立在腐蚀和膨胀这两个基本操作之上的。 开运算 先腐蚀后膨胀,用来消除小物体,在纤细点出分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。 闭运算 先膨胀后腐蚀,排除小型黑洞(黑色区域) 形态学梯度 膨胀图和腐蚀图之差,对二值图像操作能将团块的边缘突出出来。 顶帽 原图像与开运算的结果图之差,由于开运算放大了裂缝或者局部低亮度的区域,因此原图中减去开运算后的图

OpenCV-图像处理(26、直方图反向投影(Back Projection))

二次信任 提交于 2019-11-27 00:22:53
反向投影 反向投影是反映直方图模型在目标图像中的分布情况(此直方图模型是由目标图像计算生成的) 简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型 反向投影 – 步骤 建立直方图模型 计算待测图像直方图并映射到模型中 从模型反向计算生成图像 实现步骤与相关API 加载图片imread 将图像从RGB色彩空间转换到HSV色彩空间cvtColor 计算直方图和归一化calcHist与normalize Mat与MatND其中Mat表示二维数组,MatND表示三维或者多维数据,此处均可以用Mat表示。 计算反向投影图像 - calcBackProject mixChannels()参数说明: mixChannels(//用于将输入数组的指定通道复制到输出数组的指定通道 const Mat* src, //输入数组或向量矩阵,所有矩阵的大小和深度必须相同。 size_t nsrcs, //矩阵的数量 Mat* dst, //输出数组或矩阵向量,大小和深度必须与src[0]相同 size_t ndsts,//矩阵的数量 const int* fromTo,//指定被复制通道与要复制到的位置组成的索引对 size_t npairs //fromTo中索引对的数目 ); void calcBackProject( const Mat*

OpenCV中图像处理

99封情书 提交于 2019-11-26 23:23:19
一.颜色空间转换 1.cv2.cvtColor(input_img,flag) 参数1是要转换的图像 参数2是转换类型 例如:cv2.COLOR_BGR2HSV (RGB->HSV) cv2.COLOR_BGR2GRAY(RGB->灰度图),常用 import cv2 import numpy as np img = cv2.imread('timg5.jpg') img1 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img2 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) cv2.namedWindow('img',cv2.WINDOW_NORMAL) cv2.namedWindow('Gray',cv2.WINDOW_NORMAL) cv2.namedWindow('hsv',cv2.WINDOW_NORMAL) cv2.imshow("img",img) cv2.imshow('Gray',img1) cv2.imshow('hsv',img2) cv2.waitKey(0) 效果图: 原图             灰度图 HSV图 2.cv2.inRange(src, lowerb, upperb, dst=None) 二值化 src:输入原图,可以为单通道灰度图像,也可以为3通道彩色图像 lowerb

深度学习(六):卷积运算与图像处理

女生的网名这么多〃 提交于 2019-11-26 15:57:09
在介绍卷积神经网络之前,我们需要先了解以下卷积运算和互相关运算。很多时候,我们都说卷积神经网络在图像处理方面具有很大的优势,主要原因就在于卷积运算,所以接下来就主要从图像处理和卷积的联系入手进行分析。 卷积运算在概率统计中关于随机变量的和的计算中也有出现,从数学上的定义来看,当我们有两个随机变量分别服从密度函数f和g,如果需要求它们的和t的概率密度,那么就有: s ( t ) = f ∗ g = ∫ − ∞ ∞ f ( x ) g ( − x + t ) d x s(t) = f*g = \int _{-\infty} ^{\infty} f(x) g(-x+t)dx s ( t ) = f ∗ g = ∫ − ∞ ∞ ​ f ( x ) g ( − x + t ) d x 这是一维的情况,对于二维,我们可以进一步推广: s ( u , v ) = f ∗ g = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) g ( − x + u , − y + v ) d x d y s(u,v) = f*g = \int _{-\infty} ^{\infty} \int _{-\infty} ^{\infty} f(x,y) g(-x+u, -y+v)dxdy s ( u , v ) = f ∗ g = ∫ − ∞ ∞ ​ ∫ − ∞ ∞ ​ f ( x , y ) g ( −