数字图像处理入门
Ibelievesunshine
毕业于浙江师范大学数计学院,是一名图像处理工程师
展开
-
图像随机裁剪实现
实验条件:从1张图像随机裁剪100张图像裁剪出图像的大小为 60 x 60IoU 大于等于 th=0.6 的裁剪框用红色标出,其它裁剪框用蓝色标出IoU 比对原始区域用绿框标出实验代码:import cv2 as cv import numpy as npnp.random.seed(0)# get IoU overlap ratiodef iou(a, b): # ...原创 2020-03-27 14:23:38 · 2326 阅读 · 0 评论 -
IoU实现 python
IoU公式重合程度通过检测评价函数IoU(Intersection over Union)来判断,IoU计算公式如下:参数说明:python实现IoU源码:import numpy as np# get IoU overlap ratiodef iou(a, b): # get area of a area_a = (a[2] - a[0]) * (a[3] - a...原创 2020-03-27 13:59:58 · 481 阅读 · 0 评论 -
利用k-means算法实现图像自动色彩量化
图像色彩量化请参考:图像色彩量化讲解及实现k-means算法请参考:k-means算法讲解及实现算法流程:从图像中随机选取K个RGB分量(K是k-means的类别数)将图像中的像素分配到颜色距离最短的那个类别的索引中去,色彩距离按照下面的方法计算:计算各个索引下像素的颜色的平均值,这个平均值成为新的类别如果原来的类别和新的类别一致,算法结束;不一致,重复步骤2和步骤3...原创 2020-03-27 13:15:21 · 2169 阅读 · 0 评论 -
利用k-means算法解决简单的无监督图像识别任务
k-means Clustering(k平均聚类算法)简介:无监督学习对图像进行分类时,可以采用k-means算法。该算法实现简单,运行速度快。该算法要求事先知道数据所具有的类别数。k-means时数据最初的随机分类类别会对最终结果产生很大的影响。数据较少时k-means算法分类可能会失败。k-means 算法:为每个数据随机分配类计算每个类的重心计算每个数据与重心之间的距离,将...原创 2020-03-27 10:53:07 · 2001 阅读 · 0 评论 -
图像识别讲解 以一个简单的图像识别任务为例
图像识别概念图像识别是识别图像中物体的类别(属于哪一个类)的任务。图像识别通常被称为Image Classification、Categorization、Clustering。卷积神经网络(CNN)出现之前,一般用HOG、SIFT、SURF等方法先从图像中提取特征,然后通过特征确定物体的类别。利用图像直方图实现简单的图像识别任务算法流程:将训练集中的图像进行减色处理(图像色彩量化...原创 2020-03-26 21:13:51 · 2376 阅读 · 0 评论 -
图像角点检测概述
角点广义定义:不同方向线条的交点。如下图:数字图像中角点定义:像素点附近区域像素无论是在梯度方向,还是在梯度幅值上都发生较大变化一阶导数(灰度图像的梯度)的局部最大所对应的像素点两条及两条以上边缘的交点图像中梯度值和梯度方向变化速率都很高的像素点角点处一阶导数最大、二阶导数为0,指示物体边缘变化不连续的方向检测角点的意义:角点是图像中的重要特征,对帮助人们理解、分析图...原创 2020-03-26 18:07:14 · 2019 阅读 · 0 评论 -
使用opencv中函数实现基于Harris算法的图像角点检测
opencv(python)中Harris角点检测函数函数原型:dst = cv.cornerHarris( src, blockSize, ksize, k[, dst[, borderType]] )src : 原图blockSize : 检测过程中移动窗口大小ksize : Soble 滤波器的大小k : 常数,通常取值范围[0.04,0.16]对参数有不懂,请参考:Harr...原创 2020-03-26 17:58:00 · 570 阅读 · 0 评论 -
Harris角点检测算法手动实现
算法流程:将图像转换为灰度图像利用Sobel滤波器求出 海森矩阵 (Hessian matrix) :将高斯滤波器分别作用于Ix²、Iy²、IxIy;计算每个像素的 R= det(H) - k(trace(H))²。det(H)表示矩阵H的行列式,trace表示矩阵H的迹。通常k的取值范围为[0.04,0.16]。满足 R>=max® * th 的像素点即为角点。th常取0....原创 2020-03-26 15:40:59 · 1353 阅读 · 1 评论 -
Gabor滤波器详解
解读Gabor滤波器Fourier 变换是一种信号处理的有力工具,可以将图像从空域转换到频域,并提取到空域上不易提取到的特征。但是Fourier变换缺乏时间和位置的局部信息。Gabor 变换是一种短时加窗Fourier变换(简单理解起来就是在特定时间窗内做Fourier变换),是短时傅里叶变换中窗函数取为高斯函数时的一种特殊情况。因此,Gabor滤波器可以在频域上不同尺度、不同方向上提取相关...原创 2020-03-26 13:51:16 · 9609 阅读 · 3 评论 -
python实现Gabor滤波器
Gabor 函数表示复数表示:实数部分:虚数部分:其中:代码中参数和Gabor函数参数对应关系代码实现了Gabor滤波器的实数部分。代码中参数和Gabor函数实数部分参数对应如下:对应看上去是不是感觉很容易实现Gabor滤波器,那我来实现一下,并使用Gabor滤波器来提取图像特征。import cv2import numpy as npimport matplot...原创 2020-03-25 18:47:53 · 8281 阅读 · 4 评论 -
利用高斯金字塔制作图像显著图
显著图:显著图是将一幅图像中最容易吸引人眼球的部分突出表现的图像虽然现在我们通常使用深度学习的方法计算显著图,但是一开始人们用图像的RGB成分或者HSV成分创建高斯金字塔,并通过求差来得到显著图。有关高斯金字塔的描述,读者可查看:知乎大神讲解高斯金字塔自己实现高斯金字塔我提供了使用高斯金字塔来简单地求显著图的算法:我们使用双线性插值调整图像图像大小至 1/2 1/4 1/8… ,再...原创 2020-03-25 17:05:00 · 661 阅读 · 0 评论 -
python实现高斯金字塔
import cv2import numpy as npimport matplotlib.pyplot as plt# Grayscaledef BGR2GRAY(img): # Grayscale gray = 0.2126 * img[..., 2] + 0.7152 * img[..., 1] + 0.0722 * img[..., 0] return g...原创 2020-03-25 12:11:00 · 2343 阅读 · 2 评论 -
使用差分金字塔提取图像边缘 python实现
提供一种提取图像边缘的快速算法更多提取图像边缘的方法:最大-最小滤波器实现图像边缘提取Prewitt滤波器和Sobel滤波器提取图像边缘拉普拉斯滤波器提取图像边缘差分金字塔提取图像边缘算法:将原图像先缩小2倍,再放大2倍(都使用双线性插值算法)[在此过程中主要是图像的高频部分被模糊了]。得到了原图像的模糊图像。将原图像减去模糊图像,得到了图像的边缘。就是这么简单!实验代码imp...原创 2020-03-25 11:32:30 · 494 阅读 · 0 评论 -
使用色彩追踪和形态学运算得到图像中感兴趣区域
色彩追踪简介:在RGB图像中,我们感兴趣的部分往往具有趋于一致的颜色,我们想得到感兴趣部分时,可以考虑先找到特定颜色的区域。比如说有一张风景照,我们对蓝天白云(其它部分不是蓝色)感兴趣,需要我们使用色彩追踪算法追踪图像中的蓝色和白色,得到原图的蓝色和白色区域。关于色彩追踪算法的详细说明请查看以下链接色彩追踪讲解色彩追踪算法产生的掩膜中白色部分含一些黑色小点,使用掩膜直接作用于图像的话,...原创 2020-03-25 10:34:57 · 450 阅读 · 0 评论 -
图像掩膜讲解
掩膜:通过使用黑白二值图像 X 原图像,使二值图像黑色部分对应的原图像中的部分变成黑色,从而提取出原图像感兴趣部分。使用掩膜可以提取原图像中的特定图像,数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于:提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不...原创 2020-03-24 21:02:00 · 3271 阅读 · 0 评论 -
图像色彩追踪
色彩追踪指的是找出RGB图像中特定颜色在原图中所在的位置思考:由于在RGB色彩空间中颜色有256³种,色彩追踪是比较困难的。所以我们考虑先将图像转换到HSV色彩空间中。HSV变换,是将RGB变换到H(Hue:色相)、S(Saturation:饱和度)、V(Value:明度)的方法关于RGB变到HSV可参考关于HSV色彩空间的一些说明:饱和度越小,图像越白,饱和度越大,颜色越浓烈,0...原创 2020-03-24 18:46:47 · 1376 阅读 · 0 评论 -
手动绘制方向梯度直方图(HOG)
HOG(Histogram of Oriented Gradients)——方向梯度直方图,是一种表示图像特征量的方法,特征量是表示图像的状态等的向量集合。在图像识别(图像是什么)和检测(物体在图像的哪个位置)中,我们需要:从图像中获取特征量(特征提取);基于特征量识别和检测(识别和检测);由于深度学习通过卷积网络自动执行特征提取和识别,所以看不到HOG,但在深度学习变得流行之前,HOG...原创 2020-03-24 17:25:54 · 1218 阅读 · 0 评论 -
Zhang-Suen细化算法讲解及实现
算法流程首先要反转原图像,因为算法之后所有的操作都将0作为前景,将1作为背景。考虑以下两个步骤步骤1:执行光栅扫描并标记满足以下5个条件的所有像素:这是一个黑色像素;顺时针查看x2、x3、…、x9、x2时,从0到1的变化次数仅为1;x2、x3、…、x9中1的个数在2个以上6个以下;x2、x4、x6中至少1个为1;x4、x6、x8中至少1个为1;将满足条件的所有像素标为1...原创 2020-03-24 13:03:21 · 4159 阅读 · 4 评论 -
hilditch图像细化算法python实现
import cv2import numpy as npimport matplotlib.pyplot as plt# hilditch thiningdef hilditch(img): # get shape H, W, C = img.shape # prepare out image out = np.zeros((H, W), dtype=...原创 2020-03-24 11:36:18 · 2263 阅读 · 3 评论 -
根据图像连接数判别不同像素所处的位置
一. 定义:4-连接数 4-连接数用于显示像素的状态和附近像素的状态。对于中心像素x_0(x,y),它的邻域定义如下: 像素x_0的邻域 ↑ 4-连接数的计算公式 ↑S的取值范围为[0,4]:① S=0:内部点或孤点② S=1:端点③ S=2:连接点...原创 2020-03-24 10:31:50 · 2571 阅读 · 0 评论 -
图像融合实现
import cv2import numpy as np# Read imageimg = cv2.imread("../paojie.jpg").astype(np.float32)H, W, C = img.shapeimg2 = cv2.imread("../bird.png").astype(np.float32)img = cv2.resize(img,img2.sha...原创 2020-03-23 14:16:13 · 913 阅读 · 0 评论 -
模式匹配原理及实现
一. 模式匹配简介:模式匹配 ——> 寻找待匹配图像和全体图像中最相似的部分,常用于物体检测任务。虽然现在使用卷积神经网络做物体检测任务有更好的效果,但是模式匹配是最基本的物体检测方法,它很基础,很重要。二. 模式匹配算法:原图像为 I(H X W),待匹配图像为 T(h X w)。1. 对于图像 I:,for j in range(H-h):fo...原创 2020-03-23 10:52:33 · 2533 阅读 · 0 评论 -
opencv 图像平滑、图像模糊函数的使用
图像平滑(图像模糊): 一幅图像和一个低通滤波器进行卷积,能够实现图像平滑效果,也就是图像模糊效果。平滑操作通常会从图像中移除高频信息(噪音、边缘)。所以图像平滑后,图像边缘往往会被模糊(本文介绍的最后一种双边模糊技术基本不会模糊图像边缘)。Opencv 提供了多种图像平滑技术,也叫图像模糊技术。1. 平均模糊# kernel size is 5*5blur =cv.blu...原创 2020-03-22 21:50:01 · 1026 阅读 · 0 评论 -
Canny提取图像边缘后使用闭运算连接断线
实验:# Writer : wojianxinygcl@163.com# Date : 2020.3.22import cv2 as cvimport numpy as npimage = cv.imread("../bird.png")gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)# 80以下为0,210以上为255,中间使用...原创 2020-03-22 14:06:30 · 5950 阅读 · 0 评论 -
图像形态学变换 膨胀和腐蚀 开闭运算 边缘检测 opencv实现
一. 官方文档:dilate(膨胀):函数原型 ↑参数说明 ↑ cv.erode(腐蚀)的使用和其类似。二. 实验:膨胀和腐蚀# Writer : wojianxinygcl@163.com# Date : 2020.3.22import cv2 as cvimport numpy as npimage = cv.imread("../paoji...原创 2020-03-22 13:38:34 · 1106 阅读 · 0 评论 -
图像形态学运算之图像开闭运算 含python实现
如果您觉得本文不错,帮忙点赞哦!一. 图像形态学处理 —— 膨胀和腐蚀 图解图像腐蚀和膨胀 ↑二. 开运算与闭运算: 开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声)。 闭运算:先膨胀后腐蚀,能够消除图像区域内的小黑点(噪声)。 图解图像开运算与闭运算 ↑为什么有了膨胀、腐蚀...原创 2020-03-21 21:46:39 · 3173 阅读 · 4 评论 -
图像膨胀、腐蚀算法实现 python源码
如果您觉得本文不错!记得点赞哦!一. 图像形态学简介:图解图像腐蚀、膨胀 ↑经验之谈:形态学操作一般作用于二值图像,来连接相邻的元素(膨胀)或分离成独立的元素(侵蚀)。腐蚀和膨胀是针对图片中的白色(即前景)部分!二. 图像形态学操作 膨胀和腐蚀的算法:膨胀算法: 对于待操作的像素 f(x,y),不论 f(x,y-1) 、f(x,y+1) 、...原创 2020-03-21 20:46:43 · 4932 阅读 · 3 评论 -
opencv 提取图像线条 霍夫线检测
# Writer : wojianxinygcl@163.com# Data : 2020.3.21import cv2 as cvimport numpy as npimg = cv.imread('../paojie.jpg')gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)# 50,150 为二值化时的阈值 apertureSize为...原创 2020-03-21 17:18:07 · 3037 阅读 · 1 评论 -
从零开始实现霍夫变换检测图像直线算法 python
创作不易,如果对您有帮助,帮忙点赞哦!一. 霍夫变换理解: 可参考:https://www.cnblogs.com/hellcat/p/9896426.html二. 霍夫变换简介:霍夫变换,是将坐标由直角坐标系变换到极坐标系,然后再根据数学表达式检测某些形状(如直线和圆)的方法。当 l1直线 上的某些点变换到极坐标系下时,表现为某些线(和前面点数量一致),这些线交于一...原创 2020-03-21 16:23:55 · 5984 阅读 · 1 评论 -
利用 opencv 中的 cv.Canny 函数快速进行图像边缘检测
一. 算法原理: 可参考:https://www.cnblogs.com/wojianxin/p/12533526.html https://www.jianshu.com/p/ff4c1a6a68d8二. opencv 函数 cv.Canny 快速实现 Canny 边缘检测算法(必须先搞懂算法流程,才能正确使用该函数):...原创 2020-03-21 10:06:41 · 1303 阅读 · 0 评论 -
Canny边缘提取算法手动实现 python
创作很累,如果您觉得对您有帮助,请点赞支持,感谢!一. 总的算法流程:① 使用高斯滤波器滤波② 使用 Sobel 滤波器滤波获得在 x 和 y 方向上的输出,在此基础上求出边缘的强度和边缘的角度 edge 为边缘强度,tan 为边缘角度 ↑③ 对边缘角度进行量化处理 对边缘角度进行量化处理算法 ↑④ 根据边缘角度对边缘强度进行非极大值...原创 2020-03-20 18:29:10 · 3931 阅读 · 2 评论 -
python源码 高通滤波、低通滤波、带通滤波
创作不易,如果此文使您有收获,记得点赞哦!一. 傅里叶变化原理: https://www.cnblogs.com/wojianxin/p/12529809.html二. 高通滤波、低通滤波、带通滤波: 高通滤波:高频信息通过,低频信息被阻挡; 低通滤波:低频信息通过,高频信息被阻挡; 带通滤波:介于低频和高频之间的一带信息通过,其它信息被阻挡。...原创 2020-03-20 13:00:30 · 6781 阅读 · 2 评论 -
python的图像傅里叶变换 np.fft.fft2 cv.dft 函数
码字不易,如果对您有所帮助,记着点赞哦!一. 图像傅里叶变换原理: 原理简介请参考:https://www.cnblogs.com/wojianxin/p/12529809.html 对二维图像进行傅里叶变换用如下公式进行:图像长M,高N。F(u,v)表示频域图像,f(x,y)表示时域图像。u的范围为[0,M-1],v的范围为[0,N-1] ↑ 对二维图...原创 2020-03-20 10:44:12 · 29822 阅读 · 8 评论 -
傅里叶变换原理讲解及python手动实现
创作不易,如果对您有所帮助,请帮忙点赞,感谢!一. 傅里叶变换简介:在数字图像处理中,有两个经典的变换被广泛使用——傅里叶变换和霍夫变换。傅里叶变换是将时间域上的信号转变为频率域上的信号,进而进行图像去噪、图像增强等处理。傅里叶变换(Fourier Transform,FT)后,对同一事物的观看角度随之改变,可以从频域里发现一些从时域里不易察觉的特征。某...原创 2020-03-20 09:57:09 · 4582 阅读 · 1 评论 -
图像仿射变换之倾斜的python实现
如果您觉得本文对您有所帮助,请帮忙点赞,感谢!一. 仿射变换算法原理:仿射变换过程,(x,y)表示原图像中的坐标,(x',y')表示目标图像的坐标 ↑二. 仿射变换倾斜算法原理: 原图像大小为h*w X-sharing:倾斜之x轴逆时针旋转tx度时的图像仿射变换公式 ↑ Y-sharing:倾斜之y轴逆时针旋转ty度时的图像仿射变换公式...原创 2020-03-19 11:38:42 · 1831 阅读 · 1 评论 -
图像仿射变换之图像旋转 python
一. 实验代码实验目标:实现输入图像绕中心点逆时针旋转30度import cv2import numpy as np# affine transformation -> rotationdef affine(img, a, b, c, d, tx, ty): H, W, C = img.shape # temporary image tem = img.copy()...原创 2020-03-19 09:12:26 · 800 阅读 · 0 评论 -
图像仿射变换python实现
写文章不易,如果您觉得此文对您有所帮助,请帮忙点赞、评论、收藏,感谢您!一. 仿射变换介绍:请参考:图解图像仿射变换:https://www.cnblogs.com/wojianxin/p/12518393.html 图像仿射变换之图像平移:https://www.cnblogs.com/wojianxin/p/12519498.html二...原创 2020-03-18 21:54:21 · 2150 阅读 · 1 评论 -
图像仿射变换 图像平移 python实现
写文章不易,如果您觉得此文对您有所帮助,请帮忙点赞、评论、收藏,感谢您!一. 仿射变换介绍: 请参考:图解图像仿射变换:https://www.cnblogs.com/wojianxin/p/12518393.html二. 仿射变换 公式:仿射变换过程,(x,y)表示原图像中的坐标,(x',y')表示目标图像的坐标 ↑三. 仿射变换——图像平移 算法:...原创 2020-03-18 19:17:56 · 1038 阅读 · 0 评论 -
图解图像仿射变换
一. 原理: 文章参考自:https://www.cnblogs.com/liekkas0626/p/5238564.html 仿射变换(Affine Transformation 或 Affine Map)是一种二维坐标(x,y)到二维坐标(u,v)的线性变换,其数学表达式为:仿射变换数学表达式 ↑对应齐次坐标矩阵 ↑...转载 2020-03-18 16:53:49 · 900 阅读 · 0 评论 -
opencv中的resize函数实现图像插值缩放
如果本文对您有帮助,请帮忙点赞、评论、收藏,感谢!python 为例一. 函数原型dst=cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 参数含义: src:input image.dst:output image; it has the size...原创 2020-03-18 14:03:19 · 1389 阅读 · 1 评论