图像分割

基于DSP的FCM图像分割

[亡魂溺海] 提交于 2019-11-30 15:46:13
基于DSP的FCM图像分割 一、目标 利用VisualDSP++ 5.0、仿真器、EBF-561实验平台实现该算法,并通过该聚类算法实现图像的不同区域的聚类结果。 二、实现方案 实验原理 FCM 聚类算法目标函数为 如果 p表示每一个样本x_j的维数0,X={x_1,x_2,…x_j,…x_N}是一个p×N矩阵;N表示样本数目,通常表示图像像素数;C表示聚类数目;u_ij⊆U(p×N×C)是矢量x_j隶属于第i类的隶属度函数,满足u_ij∈[0,1]且∑_(i=1)^C▒u_ij =1;聚类中心Z={z_1,z_2,…z_i,…z_c}是 p×C矩阵,u_ij和z_i更新等式分别为: 对于每一个模糊隶属度,由m∈(1,∞)控制模糊度的权重指数; d^2 (x_j,x_i )=∥x_j-z_i∥为相似性测度。 变量说明 p 数据样本维数(灰度图像时为 1); N 像素点数目 Xi 像素i特征(灰度图像时,表示灰度值); C 图像分割类别数; Uij 像素点j属于第i类的隶属度 Zi 第 i 类聚类中心。 实验步骤 1)置目标函数精度ε,模糊指数m(m通常取 2),最大迭代次数T_m; 2)初始化模糊聚类中心 z_i; 3)由式2更新模糊划分矩阵U={u_ij}和聚类中心Z={z_C} 4)若|J(t)-J(t-1)|<ε或c>T_m则结束聚类;否则,t=t+1并转第(3)步骤; 5

【图像分割python实现三】laplace算子边缘检测

僤鯓⒐⒋嵵緔 提交于 2019-11-30 12:11:31
# -*- coding: utf-8 -*- import matplotlib . pyplot as plt import numpy as np import cv2 """ laplace算子作为边缘检测,是各方向的二阶导数 其卷积模板为: 0 1 0 1 -4 1 0 1 0 或拓展模板 1 1 1 1 -8 1 1 1 1 """ path = '/Volumes/项目/10.Deep Learning/06.Severstal Steel Defect Detection/00.data/other_img/' img = cv2 . imread ( path + 'lena.jpg' ) img_gray = cv2 . cvtColor ( img , cv2 . COLOR_RGB2GRAY ) img_gray_array = np . array ( img_gray ) #3 * 3 卷积 def conv2 ( img , H , W , kernel ) : k_h = kernel . shape [ 0 ] k_w = kernel . shape [ 1 ] res = np . zeros ( [ H , W ] ) for i in range ( 0 , H - ( k_h - 1 ) ) : for j in range ( 0 ,

【图像分割python实现四】区域生长算法

↘锁芯ラ 提交于 2019-11-30 12:11:24
# -*- coding: utf-8 -*- import matplotlib . pyplot as plt import numpy as np import cv2 """ 区域生长算法 前提: 生长规则可以是平均灰度、纹理和颜色等 算法: 1. 顺序查找图像,找到第一个未归类的像素 (x0, y0) 2. 通过遍历该像素的四领域集合,若满足生长规则则并入区域集合; 3. 继续寻找该区域集合的四领域知道无法继续生长; 4. 重新回到步骤1,直到所有图像像素都被分类 """ path = '/XXXX/' img = cv2 . imread ( path + 'lena.jpg' ) img_gray = cv2 . cvtColor ( img , cv2 . COLOR_RGB2GRAY ) img_gray_array = np . array ( img_gray ) img_gray_array = cv2 . resize ( img_gray_array , ( 128 , 128 ) , interpolation = cv2 . INTER_LINEAR ) img_mask = np . zeros ( img_gray_array . shape ) grow_dir = [ ( 0 , 1 ) , ( 0 , - 1 ) , ( 1 , 0 ) ,

【图像分割python实现五】均值聚类

隐身守侯 提交于 2019-11-30 12:11:12
# -*- coding: utf-8 -*- import matplotlib . pyplot as plt import numpy as np import cv2 """ k-mean聚类图像分割算法 1. 这里FCM 模糊聚类也是相似的,只是将硬分类变成隶属函数; 2. 但无论是K-mean还是FCM 隶属函数都很麻烦,这里用的是灰度值, 基本也就等价于一种自适应的基于阈值的图像分割了 第一步. 随机设定一个分类, 初始化C个灰度值 第二步. 计算图像中所有像素与这个分类的关系,进行分类; 第三步. 将分类后的像素灰度均值作为新的分类 第四步. 迭代上述三步,直到新的分类点与老的分类点满足收敛要求 """ path = '/XXXXX/' img = cv2 . imread ( path + 'lena.jpg' ) img_gray = cv2 . cvtColor ( img , cv2 . COLOR_RGB2GRAY ) img_gray_array = np . array ( img_gray ) img_gray_array = cv2 . resize ( img_gray_array , ( 128 , 128 ) , interpolation = cv2 . INTER_LINEAR ) img_classifier = np . zeros

【图像分割python实现六】灰度共生矩阵

让人想犯罪 __ 提交于 2019-11-30 12:10:46
# -*- coding: utf-8 -*- import matplotlib . pyplot as plt import numpy as np import cv2 """ 灰度共生矩阵 GLCM 1. 取 N*M 图像的任意一点(x, y),以及另外一点(x+a, y+b) 对应的灰度值为(g1, g2) 备注:这里g1对应(x,y)的灰度值,g2对应(x+a, x+b)的灰度值 2. 遍历图像则会有 N*M 个(g1, g2)的值, 根据这个值出现的频率计算P(g1, g2) 3. 这个概率分布就是灰度共生矩阵 备注:这里a和b取不同的值,就意味着图像从不同的方向进行扫描形成灰度共生矩阵, 例如 a = 1 b = 0,则是水平向左扫描 根据这个灰度共生矩阵,可以直接得出类似ASM能量(灰度共生矩阵的平方和)、对比度、逆差距等一些列图像特征; """ #path = '/XXXXX/' #img = cv2.imread(path + 'wenli01.jpeg') path = '/Volumes/项目/10.Deep Learning/06.Severstal Steel Defect Detection/00.data/train_images/' img = cv2 . imread ( path + '0002cc93b.jpg' ) img_gray =

综述自动驾驶中的计算机视觉Computer Vision for Autonomous Vehicles: Problems, Datasets and State-of-the-Art(上)

只谈情不闲聊 提交于 2019-11-30 03:15:52
综述原文链接 https://arxiv.org/pdf/1704.05519.pdf 17年CVPR上的一篇关于自动驾驶和计算机视觉的综述,比较全面,大体整理一个提纲,重点关注比较新的研究成果,侧重于深度学习方面的。 1. History of Autonomous Driving 自动驾驶的历史 这一部分介绍了自动驾驶的项目和自动驾驶的比赛,包括比较出名的Google waymo,NVIDIA的Dave2,DARPA等,了解一下。 1.1 Autonomous Driving Projects 自动驾驶项目 PROMETHEUS 1986 Navlab 1988 VisLab及其衍生项目 10年之后 PROUD 2010 V-charge an electric automated car outfitted with close-to-market sensors Google Waymo 2009至今 Tesla Autopilot Nvidia DAVE2 Long Distance Test Demonstrations 1.2 Autonomous Driving Competitions 自动驾驶比赛 ELROB The European Land Robot Trial DARPA 2004 American Defense Advanced Research

【数字图像处理】边缘检测与图像分割

馋奶兔 提交于 2019-11-29 16:47:56
原文链接: 边缘检测与图像分割 作者: HUSTLX 1图像分割原理 图像分割的研究多年来一直受到人们的高度重视,至今提出了各种类型的分割算法。Pal把图像分割算法分成了6类:阈值分割,像素分割、深度图像分割、彩色图像分割,边缘检测和基于模糊集的方法。但是,该方法中,各个类别的内容是有重叠的。为了涵盖不断涌现的新方法,有的研究者将图像分割算法分为以下六类:并行边界分割技术、串行边界分割技术、并行区域分割技术、串行区域分割技术、结合特定理论工具的分割技术和特殊图像分割技术。而在较近的一篇综述中,更有学者将图像分割简单的分割数据驱动的分割和模型驱动的分割两类。下面将图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法、基于数学形态的分割方法以及基于特定理论的分割方法等,对其中主要的分别进行简要介绍。 1.1灰度阈值分割法 是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换: 其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。 由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。如果阈值选取过高,则过多的目标区域将被划分为背景,相反如果阈值选取过低,则过多的背景将被划分到目标区 [7] 。阈值确定后

图像分割之cvSnakeImage

孤者浪人 提交于 2019-11-29 14:54:34
基本概念 OpenCV之前有个cvSnakeImage函数实现了Snakes活动轮廓模型,但是cvSnakeImage函数在opencv2中已经被去掉。由于没有无法得知其依据的论文,这里根据源代码简单介绍它的原理。遍历每个轮廓的点,计算该点邻域内每个点的能量E,将能量最小的点代替当前点。E= alpha * Econt + beta * Ecurv + gamma * Eimg。Econ表示轮廓点的距离信息,Ecurv表示轮廓点的曲率信息,Eimg表示像素或者像素梯度。 用OpenCV3.x重新实现后,发现貌似只对二值化图像分割有作用。 示例演示 用OpenCV3.x重新实现cvSnakeImage函数。 完整工程代码 。 void SnakeImage::segment(std::vector<cv::Point> &points) { drawCurve(points); if (points.size() < 3) return; int i = 0, j = 0, k = 0; //win_ is a domain, in which search minimization of energy for each point //neighbors is the number of points in win_ int neighbors = win_.height *

123

大城市里の小女人 提交于 2019-11-28 22:15:25
主要语义分割网络调研 介绍 图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类。虽然自 2007 年以来,语义分割/场景解析一直是计算机视觉社区的一部分,但与计算机视觉中的其他领域很相似,自 2014 年 Long等人 首次使用全卷积神经网络对自然图像进行端到端分割,语义分割才产生了大的突破。 网络架构 一般的语义分割架构可以被认为是一个 编码器-解码器 网络。 编码器 通常是一个预训练的分类网络,像 VGG、ResNet,然后是一个 解码器 网络。这些架构不同的地方主要在于 解码器 网络。 解码器 的任务是将 编码器 学习到的可判别特征(较低分辨率)从语义上投影到像素空间(较高分辨率),以获得密集分类。 不同于分类任务中网络的最终结果(对图像分类的概率)是唯一重要的事,语义分割不仅需要在像素级有判别能力,还需要有能将编码器在不同阶段学到的可判别特征投影到像素空间的机制。不同的架构采用不同的机制(跳跃连接、金字塔池化等)作为解码机制的一部分。 Fully Convolution Networks (FCNs) 全卷积网络 Fully Convolutional Networks for Semantic Segmentation(2015) 作者将当前分类网络(AlexNet, VGG net 和 GoogLeNet)修改为全卷积网络

全卷积神经网络图像分割(U-net)-keras实现

故事扮演 提交于 2019-11-28 10:36:44
最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用 keras 实现了,并且用了一个医学图像的数据集进行了图像分割。 全卷积神经网络 大名鼎鼎的FCN就不多做介绍了,这里有一篇很好的博文 http://www.cnblogs.com/gujianhan/p/6030639.html。 不过还是建议把论文读一下,这样才能加深理解。 医学图像分割框架 医学图像分割主要有两种框架,一个是基于CNN的,另一个就是基于FCN的。 基于CNN 的框架 这个想法也很简单,就是对图像的每一个像素点进行分类,在每一个像素点上取一个patch,当做一幅图像,输入神经网络进行训练,举个例子: 这是一篇发表在NIPS上的论文 Ciresan D, Giusti A, Gambardella L M, et al. Deep neural networks segment neuronal membranes in electron microscopy images[C]//Advances in neural information processing systems. 2012: 2843-2851. 这是一个二分类问题,把图像中所有label为0的点作为负样本,所有label为1的点作为正样本。