
图像处理
文章平均质量分 69
mjiansun
Live and Learn.
展开
-
【OpenCV】模板匹配cv2.matchTemplate()
模板匹配是指在当前图像 A 内寻找与图像 B 最相似的部分,一般将图像 A 称为输入图像,将图像 B 称为模板图像。模板匹配的操作方法是将模板图像 B 在图像 A 上滑动,遍历所有像素以完成匹配。例如,在图 15-1 中,希望在图中的大图像“lena”内寻找左上角的“眼睛”图像。此时,大图像“lena”是输入图像,“眼睛”图像是模板图像。查找的方式是,将模板图像在输入图像内从左上角开始滑动,逐个像素遍历整幅输入图像,以查找与其最匹配的部分。转载 2025-03-23 22:09:41 · 230 阅读 · 0 评论 -
【OpenCV】Cv2.ConvertScaleAbs()函数功能(图像线性变换)详解
一个可选的偏移量,默认值为 0。它会在计算过程中加到每个像素值上,具体计算公式为 new_value = alpha * pixel_value + beta。:一个可选的缩放因子,默认值为 1。它控制图像每个像素值的放大或缩小。具体来说,new_value = alpha * pixel_value + beta。:输出图像(Mat 类型),结果图像将存储在该变量中。:输入图像(Mat 类型),它是需要处理的源图像。原创 2025-03-23 18:51:18 · 426 阅读 · 0 评论 -
【图像处理】Lucas–Kanade光流算法学习
Lucas–Kanade光流算法是一种两帧差分的光流估计算法。它由Bruce D. Lucas 和 Takeo Kanade提出。转载 2024-10-16 13:49:24 · 744 阅读 · 0 评论 -
【颜色】windows自带画图中的颜色编辑
颜色编辑中的色调、饱和度和亮度,是与HSL颜色空间保持一致。首先我使用HSV进行模拟,发现效果和数值对不上。如下图所示,他有色调、饱和度和亮度,其。因此改换HSL进行模拟,其数值如下所示;原创 2024-05-25 12:11:20 · 665 阅读 · 0 评论 -
【图像处理】图像的色彩风格滤镜
滤镜的原意是安装在相机镜头前过滤特定自然光的附加镜头,如紫外镜、偏光镜、渐变镜、雷登镜等。在数字图像处理中,主要是用来实现图像的各种特殊效果。例如 Photoshop 提供的滤镜内容丰富,具有非常神奇的作用,可以为图片创造出绚目的效果。使用 OpenCV 也可以实现各种滤镜风格,本节介绍色彩风格变换滤镜。转载 2024-04-21 00:18:02 · 358 阅读 · 0 评论 -
【图像处理】伪彩色图像处理
伪彩色图像是指对单色图像进行处理,结果转换得到颜色分量,构造为彩色效果的图像。伪彩色图像在形式和视觉表现为彩色图像,但其所呈现的颜色并非图像的真实色彩重现,仅仅是各颜色分量的像素值合成的结果。2.1函数原型函数 cv.applyColorMap() 根据色彩映射表,将灰度图像变换为伪彩色图像。src:输入图像,8 位灰度图像或彩色图像,cv_8Udst:输出图像,大小和通道数与 src 相同colormap:色彩映射表,OpenCV 自带色彩风格类型的颜色查找表。转载 2024-04-21 00:00:18 · 1746 阅读 · 0 评论 -
【图像处理】最近邻插值、双线性插值和双三次插值
但是大家只是在用这个算法,很少关注这个算法的实现细节:插值算法是如何工作的。上图效果是最近邻法的计算过程示意图,由上图可见,最近邻法不需要计算只需要寻找原图中对应的点,所以最近邻法速度最快,但是会破坏原图像中像素的渐变关系,原图像中的像素点的值是渐变的,但是在新图像中局部破坏了这种渐变关系。最近邻法实际上是不需要计算新图像矩阵中点的数值的,直接找到原图像中对应的点,将数值赋值给新图像矩阵中的点,根据对应关系找到原图像中的对应的坐标,这个坐标可能不是整数,这时候找最近的点进行插值。转载 2023-12-28 16:24:17 · 2629 阅读 · 0 评论 -
Laplace(拉普拉斯)算子 和 高斯拉普拉斯算子(Laplacian of Gaussian, LoG)
Laplace算子作为边缘检测之一,和Sobel算子一样也是工程数学中常用的一种积分变换,属于空间锐化滤波操作。拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。拉普拉斯算子是二阶微分线性算子,在图像边缘处理中,二阶微分的边缘定位能力更强,锐化效果更好,因此在进行图像边缘处理时,直接采用二阶微分算子而不使用一阶微分。转载 2023-11-02 14:53:39 · 11613 阅读 · 0 评论 -
【滤波·5】超高速指数模糊算法
同时注意到_blurrow和_blurcol函数循环明显相互之间是独立的,可以利用多线程并行处理,但是这个代码主要是专注于算法的表达,并没有过多的考虑更好的效率。原来的三四行代码一下子变成了几十行的代码,会不会变慢呢,其实不用担心,SIMD真的很强大,测试的结果是3000*2000的图耗时降低到42ms左右,而且垂直方向的耗时占比有原先的60%降低到了35%左右,现在的核心就是水平方向的耗时了。另外一点,很明显,算法的耗时是和Radius参数没有任何关系的,也就是说这也是个O(1)算法。转载 2023-08-23 11:49:44 · 390 阅读 · 0 评论 -
【ISP】低亮度图片增强方法(1)
改进算法同样采用亮度提升和对比度增强两个独立模块分别处理。1、通过使用非线性传递函数实现的亮度提升。2、图像通过对比度增强进行处理相较INDANE算法,主要改进点在步骤2、4统计图像数据对亮度调节和对比度增强两个模块进行分别优化,达到算法应用普适化的效果,即对正常照度对比度好的图像微处理。转载 2023-08-15 14:10:47 · 726 阅读 · 0 评论 -
【滤波·4】Haar小波——原理
本系列文章尽量以便于理解的方式讲解 Haar 小波的原理和应用。其中应用部分主要关注于 PRT 中使用的 double product integral 和 triple product integral 两部分。主要参考文献为 Stollnitz et al. 的 Wavelets for Computer Graphics: A Primer 和 Ren Ng 的两篇 wavelet relighting 的经典文章。转载 2023-08-09 10:30:17 · 4849 阅读 · 1 评论 -
【滤波·3】NLM非局部均值去噪
下图是NL-means算法执行过程,大窗口是以目标像素为中心的搜索窗口,两个灰色小窗口分别是以、为中心的邻域窗口。其中以为中心的邻域窗口在搜索窗口中滑动,通过计算两个邻域窗口间的相似程度为赋以权值w(x,y)。理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征。这样在实现代码的时候就少了很多除法。邻域窗口在搜索窗口中滑动,根据邻域间的相似性确定像素的权值。转载 2023-08-03 17:30:54 · 1501 阅读 · 0 评论 -
【ISP】图像色深
为了更准确的表示原意,概念部分会直接引用原文。位深(Bit Depth)是一种用‘0’和‘1’也就是‘位’来表示一张图片有多少种颜色的量化方式。通俗的说也就是表示一张照片进行色彩数码离散化的强度程度,关系到这个强度是粗粒度还是细粒度。以灰度图(Grayscale image)举例,其没有深度(只有一个channel),Bit depth就表示其有多少个灰度。更高的位深意味着可以编码更多的阴影和颜色。对于一张图片来说,并不是将颜色离散化得越细越好,原因有二。转载 2023-05-17 15:34:53 · 270 阅读 · 0 评论 -
【图像处理】opencv骨架提取(深入分析算法步骤)
前言个人感觉骨架提取提取的就是开运算过程的不可逆。一.算法步骤1.算法步骤首先上一下比较官方的算法步骤:1.获得原图像的首地址及图像的宽和高,并设置循环标志12.用结构元素腐蚀原图像,并保存腐蚀结果3.设置循环标志为0,如果腐蚀结果中有一个点为255,即原图像尚未被完全腐蚀成空集,则将循环标志设为1.4.用结构元素对腐蚀后的图像进行开运算(消除小的白色区域),并求取腐蚀运算与开运算的差(得到消除的白色区域)...转载 2022-08-15 13:57:13 · 10643 阅读 · 1 评论 -
【人脸】人脸识别中的常见softmax函数总结(A-Softmax,AM-Softmax,ArcFace等)
本文整理、总结了常见softmax(如A-Softmax,AM-Softmax,ArcFace)的公式、论文出处等。先总结几个重要的点:L-Softmax 提出了angular margin的概念,重新思考,引入cos角,认为各类之间的夹角需要有个margin。 A-Softmax将weight归一化,使得特征上的点映射到单位超球面上。 AM-Softmax将角度上的倍数关系改为cos值的比较。 Arcface将margin由cos值改为值的比较。(和AM-Softmax比较下,两者的m前面的符转载 2020-10-09 10:59:48 · 2697 阅读 · 0 评论 -
【人脸】研究人脸识别技术必须知道的十个基本概念
实验室研究人脸技术多年,不仅在技术方面有很好的积累,而且在公司内外的业务中有众多应用。在与产品、商务、工程开发同事交流过程中发现:不管是“从图中找到人脸的位置”,或是“识别出这个人脸对应的身份”,亦或是其他,大家都会把这些不同的人脸技术统称为“人脸识别技术”。因此,整理了一些常见人脸技术的基本概念,主要用于帮助非基础研究同事对人脸相关技术有一个更深入的了解,方便后续的交流与合作。人脸技术基...转载 2019-03-28 19:12:25 · 1313 阅读 · 1 评论 -
【人脸】人脸检测,识别,配准总览
正在跟着这位博主学习人脸相关的技术:https://blog.youkuaiyun.com/qq_14845119接下来给出学习的具体链接MTCNN:https://blog.youkuaiyun.com/qq_14845119/article/details/52680940转载 2019-02-28 14:03:00 · 692 阅读 · 1 评论 -
【人脸】Triplet-Loss原理及其实现、应用
转自:https://blog.youkuaiyun.com/u013082989/article/details/83537370(还是看原文吧,他的排版我学不来,这里是用作备份)讲loss的github地址是https://github.com/lawlite19/Blog-Back-Up/blob/master/code/triplet-loss/triplet_loss_np.py#L103...转载 2019-03-25 16:49:53 · 4137 阅读 · 1 评论 -
【Opencv】cv2.drawContours()函数,给定系列坐标点画轮廓
cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]])第一个参数是指明在哪幅图像上绘制轮廓;第二个参数是轮廓本身,在Python中是一个list。第三个参数指定绘制轮廓list中的哪条轮廓,如果是-1,则绘制其中的所有轮...转载 2019-12-13 15:55:44 · 8845 阅读 · 0 评论 -
【Opencv】无损保存png图片,JPG始终有损
1.保存png图像,图像后缀必须为.png,图像质量0-9,默认为3,0质量最好,9最差。cv2.imwrite("123.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])2.保存jpg图像,图像后缀必须为.jpg,图像质量0-100,默认为95,100最好,0最差。cv2.imwrite("123.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])3.使用摄像头时默认的图像尺寸为640*48转载 2021-05-17 14:43:24 · 3410 阅读 · 0 评论 -
【Python】OpenCV中的cv2.inpaint()函数
概念修复是图像插值。数字修复算法在图像插值,照片恢复,缩放和超分辨率等方面具有广泛的应用。大多数人会在家里放一些旧的退化照片,上面有一些黑点,一些笔画等。你有没有想过恢复它?我们不能简单地在绘画工具中擦除它们,因为它将简单地用白色结构替换黑色结构,这是没有用的。在这些情况下,使用称为图像修复的技术。基本思路很简单:用邻近的像素替换那些坏标记,使其看起来像是邻居(取自维基百科),考虑下面显示的图像:库函数dst = cv2.inpaint(src,mask, inpaintRadiu转载 2021-07-22 09:11:43 · 7631 阅读 · 3 评论 -
【Python-Opencv】cv2.imread()基本参数介绍
filename:需要打开图片的路径,可以是绝对路径或者相对路径,路径中不能出现中文。flag:图像的通道和色彩信息(默认值为1)。可以根据自己的需要对参数进行设置。转载 2023-03-06 17:34:13 · 1923 阅读 · 0 评论 -
如何绘制、计算直方图(基于python-opencv)
https://blog.youkuaiyun.com/i_is_a_energy_man/article/details/78291670https://www.cnblogs.com/denny402/p/5096790.html转载 2019-01-18 14:55:21 · 350 阅读 · 0 评论 -
OpenCV矩阵cv::Mat通道和位深的整理(CV_8UC1,CV_16UC1,CV_32FC1等等)
U--代表--unsigned char/int/short--无符号。1--bit_depth---比特数---代表8bit/16bit/32bit/64bit。2--S|U|F--S--代表---signed char/int/short---有符号。64F--代表--double---------双精度浮点型。32F--代表--float---------单精度浮点型。1--灰度图片--grayImg---是--单通道图像。3--RGB彩色图像---------是--3通道图像。转载 2023-01-09 17:02:38 · 3402 阅读 · 0 评论 -
【Opencv】copyMakeBorder的用法
具体使用场景在图像输入神经网络之前,需要进行一定的处理,假设神经网络的图像输入是256 256然后进行了224 224的random crop。我们需要进行如下处理:读入原始图像image = cv2.imread("img.jpg")截取图像中有价值的部分region = image[y1:y2, x1:x2]确定图片的长边和短边,然后把长边resize到224,保持...转载 2019-05-06 17:43:48 · 5885 阅读 · 0 评论 -
【Opencv】官方文档,学习教程
官方中文:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html官方英文:https://docs.opencv.org/2.4/doc/tutorials/tutorials.html学习教程:https://blog.youkuaiyun.com/zhmxy555/column/info/opencv-t...原创 2019-03-27 16:34:25 · 7551 阅读 · 1 评论 -
【OpenCV】Point类型操作
1,常用操作总结2、使用的例子//包含OpenCV的头文件//参照github https://github.com/yoyoyo-yo/Gasyori100knock #include <opencv2/opencv.hpp>#include <iostream>using namespace std;//使用OpenCV的命名空间using...转载 2019-12-14 20:01:16 · 2238 阅读 · 0 评论 -
【PyQt】如何实时显示opencv格式的视频
显示视频和显示图片一样需要新建一个QLabel来显示,然后opencv格式的图片不能直接显示,需要用下面代码转换一下。转载 2023-03-15 10:27:18 · 795 阅读 · 0 评论 -
【Opencv】使用opencv-python读取中文路径图片
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), -1) # 读入完整图片,见下面解释img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 0) # 读成灰度img = cv2.imdecode(np.fromfile(img_path, dtype=np.ui...转载 2020-04-08 17:12:07 · 1738 阅读 · 0 评论 -
【Opencv】Hough变换找直线和圆
目录题目解决方法完整代码Hough参数详解总结参考题目用霍夫变换找出图像中的直线和圆(用彩色直线和圆标记在原图上)。要求有代码,有注释,有过程、有结果 解决方法# -*- coding: UTF-8 -*-import cv2import numpy as np# 1.加载图片,转为二值图img = cv2.imread('image.jp...转载 2018-12-26 15:36:32 · 894 阅读 · 1 评论 -
【Opencv】cv2.resize()
其实cv2.resize最关键的点就是宽高,要区分到底哪个是宽哪个是高?下面代码中height,width = img.shape[:2],shape得到的高宽,其实就是行列;下面代码中cv2.resize(img,(2*width,2*height)),这个当中是使用的宽高,这里一定要注意。1.简介:cv2.resize(src,dsize,dst=None,fx=None,...转载 2019-03-12 14:55:14 · 6618 阅读 · 0 评论 -
【Opencv】C++的findcontours
函数参数详解:https://blog.youkuaiyun.com/dcrmg/article/details/51987348原理讲解:https://blog.youkuaiyun.com/guduruyu/article/details/69220296 https://blog.youkuaiyun.com/tanmx219/article/details/84973542...转载 2019-12-17 11:09:29 · 8098 阅读 · 1 评论 -
【Opencv】二值化的cv2.threshold函数
(一)简单阈值简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了。函数为cv2.threshold()这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:• cv2.THRESH_BINARY(黑白二值)如果 src(x,y)>threshold ,dst(x,y) =...转载 2019-07-25 10:26:09 · 4569 阅读 · 0 评论 -
【Opencv】学习资料
1:OpenCV学习笔记作者:优快云数量:55篇博文网址:http://blog.youkuaiyun.com/column/details/opencv-manual.html 2:部分OpenCV的函数解读和原理解读作者:梦想腾飞数量:20篇博文网址:http://blog.youkuaiyun.com/xidianzhimeng/article/category/1593859 3...转载 2018-11-30 14:09:02 · 339 阅读 · 0 评论 -
【Opencv】Canny边缘检测,也可以找轮廓
目标边缘检测的概念opencv的函数cv2.Canny()原理Canny边缘检测很流行,在1986年提出去除噪声边缘检测容易受到噪声影响,一般第一步都是用5*5的高斯滤波器去除噪声计算图像梯度对平滑后的图像使用sobel算子在水平与竖直方向上计算一阶导数,得到图像梯度(Gx和Gy)。根据梯度图找到边界梯度和方向,公式如下:梯度方向一般与边界垂直,有四类:垂直、水...转载 2019-12-13 15:36:47 · 2362 阅读 · 0 评论 -
conda 安装 opencv
conda安装opencv2conda install -c https://conda.binstar.org/menpo opencv安装opencv3conda install -c https://conda.binstar.org/menpo opencv3 注意:用conda 安装的opencv3.4是不能cv2.imshow()的,它编译的时候这个选项没...原创 2017-03-20 10:31:15 · 4432 阅读 · 1 评论 -
【Python】OpenCV boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法
https://www.cnblogs.com/gengyi/p/10317664.html#_label01 cv2.boundingRect 2 cv2.minAreaRect 2.1 附1 : cv2.boxPoints 2.2 附2:int0 3 cv2.minEnclosingCircle 3.1 附1:cv.circle() 4 cv2.rectangle 5 全代码...转载 2019-07-25 11:12:37 · 1323 阅读 · 0 评论 -
【Opencv】cvSeq
简介轮廓是由一个一个像素组成的,如何在内存中存储一个轮廓,就需要用到序列(CvSeq)结构,另外,在处理任何有序关系的动态的对象时可以用到CvSeq。序列是某种结构的链表,可以将序列想象为许多编程语言中都存在的容器类或容器模板类(如C++中的vector),序列在内存被实现为一个双端队列,因此可以实现快速的随机访问,以及快速删除顶端的元素,但是从中间删除元素值则稍慢些。opencv的实现原...转载 2019-12-17 10:59:34 · 1587 阅读 · 1 评论 -
【Opencv】Range类
1.Range是OpenCV中新加入的一个类,该类有两个关键的变量start和end;2.Range对象可以用来表示矩阵的多个连续的行或者多个连续的列3.Range表示范围从start到end,包含start,但不包含end;4.Range类还提供了一个静态方法all(),这个方法的作用如同Matlab中的“:”,表示所有的行或者所有的列例子:1.创建一个单位阵Mat A=...转载 2019-03-27 18:34:12 · 10299 阅读 · 0 评论 -
【Python】实现区域生长算法(regionGrow)
区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止。区域生长的好坏决定于1.初始点(种子点)的选取。2.生长准则。3.终止条件。区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取。区域生长的原理:区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区...转载 2019-12-10 15:31:54 · 6765 阅读 · 3 评论