k210———图像处理函数

这篇具有很好参考价值的文章主要介绍了k210———图像处理函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k210———图像处理函数(openmv)

以下是在学习过程中遇到的一些比较高级的图像处理


1. img.erode()

openmv官方解释为👇
image.erode(size[, threshold[, mask=None]])
从分割区域的边缘删除像素
这一方法通过卷积图像上 ( ( s i z e ∗ 2 ) + 1 ) x ( ( s i z e ∗ 2 ) + 1 ) ((size*2)+1)x((size*2)+1) ((size2)+1)x((size2)+1)像素的核来实现,如果相邻像素集的总和小于 threshold ,则对内核的中心像素进行归零。
若 threshold 未设定,这个方法的功能如标准腐蚀方法一样。若threshold设定,您就可以指定腐蚀的特定像素,例如:设置低于2个的像素周围阈值为2。
mask 是另一个用作绘图操作的像素级掩码的图像。掩码应该是一个只有黑色或白色像素的图像,并且应该与你正在绘制的 image 大小相同。 仅掩码中设置的像素被修改。
返回图像对象,以便您可以使用 . 表示法调用另一个方法。
不支持压缩图像和bayer图像。

感觉有点难,没听懂,所以去找了其他资料了解了一下👇

腐蚀
作用:腐蚀是一种基本的形态学图像处理操作,它可以使图像中的边界或者物体变得更细小
具体来说,腐蚀操作将图像中的每个像素点与其周围的邻域像素进行比较,并将该像素的值更新为邻域中最小的像素值。通过不断迭代腐蚀操作,可以逐渐减小图像中物体的尺寸,使其变得更加细小。
腐蚀操作在图像处理中有多种应用,常见的包括:

  1. 去除噪点:腐蚀操作可以消除图像中的小噪点或者孤立的像素点,使图像更加清晰
  2. 分离连接的物体:当图像中存在多个相连的物体时,腐蚀操作可以分离它们, 使其变成独立的物体。
  3. 缩小物体:腐蚀操作可以将图像中的物体尺寸减小,有助于进行形态> 学分析和 形状匹配。


在图像处理中,核(Kernel)是一种用于卷积操作的矩阵。腐蚀操作是一种常见的图像处理操作,通过使用核来删除图像中边缘附近的像素。
当核的大小为2时【img.erode(2)】,表示使用一个3*3的矩阵作为核。核的中心像素表示要处理的像素,而周围的8个像素被用来计算是否需要将中心像素进行腐蚀。
1 1 1
1 1 1
1 1 1
在腐蚀操作中,如果核的所有元素都与图像中对应位置的像素匹配,则中心像素被保留,否则中心像素被置零。通过这种方式,腐蚀操作可以删除图像中边缘附近的像素。
请注意,核的大小越大,腐蚀操作会更加明显,因为更多的周围像素参与了计算。在使用具体的核大小时,需要根据实际情况进行调整,以达到期望的腐蚀效果。

阈值
在 image.erode() 函数中使用阈值参数 threshold 的作用是对特定像素进行腐蚀操作,并且只有当相邻像素的总和小于阈值时才会将中心像素置零。
通过设定阈值,你可以选择性地对像素进行腐蚀,而不是对整个图像进行标准的腐蚀操作。

举个例子,如果你将阈值设为 2,那么只有周围像素总和小于 2 的像素才会被腐蚀。
这种方式可以帮助你控制腐蚀的效果,只对一些特定像素周围的邻域进行操作,而对其他像素保持不变。根据阈值的设定,你可以选择性地保留或删除较小的细节或噪点,从而改变图像的外观。

import sensor  # 导入相机模块
import image   # 导入图像处理模块

sensor.reset()  # 重置相机
sensor.set_pixformat(sensor.RGB565)  # 设置像素格式为RGB565
sensor.set_framesize(sensor.QVGA)    # 设置帧大小为QVGA(320x240)
sensor.run(1)  # 开始相机

while True:
    img = sensor.snapshot()  # 拍摄图像

    img.erode(2, threshold=10)  # 对图像进行腐蚀操作,大小为2,阈值为10

2. img.binary()

image.binary(thresholds[, invert=False[, zero=False[, mask=None ]]]
对图像进行二值化处理。
根据阈值列表 thresholds 内的阈值,将图像中的像素设置为黑色或白色。
对于灰度图像,thresholds 列表中的每个元组应包含两个值,即最小灰度值和最大灰度值。只有落在这些阈值之间的像素区域会被考虑。

对于RGB565图像,thresholds 列表中的每个元组应包含六个值,分别是 LAB L、A 和 B 通道的最小值和最大值。该函数会自动修复交换最小值和最大值的错误,并忽略多余的值。如果元组长度不够,则假设剩余的阈值范围是最大范围。

invert=False,可以选择是否反转二值化结果,默认情况下是将像素落在阈值范围内的区域设置为白色,反转后则会设置为黑色。

设置 zero 为True来使阈值像素为零,并使不在阈值列表中的像素保持不变
mask 是另一个用作绘图操作的像素级掩码的图像。掩码应该是一个只有黑色或白色像素的图像,并且应该与你正在绘制的 image 大小相同。 仅掩码中设置的像素被修改。

3. image.get_regression()

image.get_regression(thresholds[, invert=False[, roi[, x_stride=2[, y_stride=1[, area_threshold=10[, pixels_threshold=10[, robust=False]]]]]]])
官方解释👇
对图像所有阈值像素进行线性回归计算。计算式通过最小二乘法进行,通常速度较快,但是不能出路任何异常值。若 robust 为True,则使用Theil-Sen线性回归算法,它计算图像中所有阈值像素的斜率的中位数

若在阈值处理后有太多像素,即使在80x60的图像上,这个O(N^2)操作也可能将FPS降到5帧以下。 但是,只要阈值转换后的像素数量较少,即使在高达30%的阈值像素是异常值的情况下也依然有效,鲁棒性好
返回的是一个 image.line 对象(这个是运用这个函数的关键)
官方有更好的解释,这个例子中就使用了很多我们不常用,但是非常好的图像处理函数,下面也会讲到。线性回归线跟踪案例

自己的理解👇
image.get_regression() 函数用于对图像中的阈值像素进行线性回归计算。
线性回归是一种用于建立变量之间关系的统计模型,通过最小二乘法来确定变量之间的线性关系。在图像处理中,线性回归可以用来找到阈值像素之间的线性趋势或关联。
该函数有以下参数:

  • thresholds:阈值列表或阈值图像,指定要进行回归分析的阈值。阈值像素是满足特定条件的像素值,比如大于某个固定值或位于某个范围内的像素。
  • invert(可选):如果设置为 True,则将在反向图像上执行回归计算。即计算与低于阈值的像素相关的线性关系。
  • roi(可选):指定感兴趣区域(Region of Interest),只对指定区域内的像素进行回归计算。
  • x_stridey_stride(可选):指定在图像中采样的步长,用于减少计算的像素数量。
  • area_thresholdpixels_threshold(可选):控制回归计算的像素数量。如果阈值像素过多,这个计算操作可能会降低帧率。可以设置这两个参数来限制计算的像素数量。
  • robust(可选):如果设置为 True,则使用 Theil-Sen 线性回归算法,它计算所有阈值像素的斜率的中位数。Theil-Sen 算法对异常值有鲁棒性,能够有效处理存在较多异常值的数据
    调用 image.get_regression() 函数后,将返回线性回归的计算结果,通常是计算出的斜率和截距。
    该函数对图像的影响是计算出阈值像素之间的线性关系。这可以用于分析图像中的趋势检测特定区域的变化或关联等应用。通过线性回归,我们可以了解阈值像素的变化规律,并用来进行进一步的图像处理、检测或分析。

4. image.histeq()

image.histeq() 函数用于在图像上执行直方图均衡化算法,以标准化图像的对比度和亮度
直方图均衡化是一种通过重新分配图像的像素值来增强图像对比度的方法。该方法可以使得图像中的像素值更加均匀地分布在整个灰度级范围内,从而增强图像的细节和对比度。
该函数有以下参数:

  • adaptive(可选):如果设置为 True,则会运行自适应直方图均衡化方法。自适应直方图均衡化通常比非自适应直方图均衡化效果更好,但需要更长的运行时间。
  • clip_limit(可选):提供一种限制自适应直方图均衡化对比度的方法。通过设置较小的值(例如10),可以生成具有受限对比度的直方图均衡化图像。
  • mask(可选):一个像素级的掩码图像,可以作为绘图操作的限制。只有掩码中设置的像素会被修改。
    调用 image.histeq() 函数后,它将返回一个新的图像对象,你可以使用该对象调用其他图像处理方法。
    直方图均衡化可以改善图像的对比度和亮度,使得图像中的细节更加清晰可见。它可以应用于各种图像处理任务,包括图像增强、特征提取和图像分析等。
    需要注意的是,该函数不支持压缩图像和 Bayer 图像。在使用时,要根据实际需求选择适当的参数,并根据图像的特点进行实验以获得最佳结果。

5. image.laplacian()

image.laplacian(size[, sharpen=False[, mul[, add=0[, threshold=False[, offset=0[, invert=False[, mask=None]]]]]]])
官方解释👇
通过边缘检测拉普拉斯核来对图像进行卷积。
size 是内核的大小。取1 (3x3 内核)、2 (5x5 内核)或更高值。

如果 sharpen 被设置为True,那么这种方法将改为锐化图像,而不是仅输出未经过阈值处理的边缘检测图像。 增加内核大小然后增加图像清晰度。

mul 是用以与卷积像素结果相乘的数字。若不设置,则默认一个值,该值将防止卷积输出中的缩放。

add 是用来与每个像素卷积结果相加的数值。

mul 可进行全局对比度调整,add可进行全局亮度调整。

如果你想在滤波器的输出上自适应地设置阈值,你可以传递== threshold=True== 参数来启动图像的自适应阈值处理, 他根据环境像素的亮度(核函数周围的像素的亮度有关),将像素设置为1或者0。 负数 offset 值将更多像素设置为1,而正值仅将最强对比度设置为1。 设置 invert 以反转二进制图像的结果输出。

mask 是另一个用作绘图操作的像素级掩码的图像。掩码应该是一个只有黑色或白色像素的图像,并且应该与你正在绘制的 image 大小相同。 仅掩码中设置的像素被修改。

返回图像对象,以便您可以使用 . 表示法调用另一个方法。

不支持压缩图像和bayer图像。

自己的理解👇
边缘检测拉普拉斯核函数主要用于检测图像中的边缘信息。它通过将图像与一个特定的内核进行卷积运算来实现。内核的大小可以通过 size 参数来设置,一般取1、2或更高值。内核越大,图像的细节和清晰度可能会增加,但也会增加计算复杂性

如果将 sharpen 参数设置为True,那么该函数将不仅仅输出经过阈值处理的边缘检测图像,还会对图像进行锐化处理。通过增加内核大小并适当调整 muladd 参数,可以实现全局对比度和亮度的调整。

此外,你还可以使用 mask 参数来指定一个像素级掩码的图像,以限制在绘制操作中被修改的像素

总之,边缘检测拉普拉斯核函数在图像处理中具有多种用途,例如边缘检测、图像锐化、对比度和亮度调整等。它可以帮助提取图像中的边缘特征,并通过调整参数来达到所需的效果。文章来源地址https://www.toymoban.com/news/detail-659300.html

到了这里,关于k210———图像处理函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉——图像处理基础

    随着计算机视觉的不断发展,图像的预处理成为分析图像的必然前提,本文就介绍图像处理的基础内容。 图像中,高频部分是图像中像素值落差很大的部分,如图像边缘,该部分的有用信息经常被噪声淹没。降低高频段的噪声是设计图像滤波器的关键。 图像滤波器就是一个

    2024年01月19日
    浏览(62)
  • 图像处理与计算机视觉算法

    图像处理与计算机视觉算法是实现对图像和视频内容分析、理解和操作的一系列技术。这些算法可以分为多个类别,包括但不限于以下几个主要方面: 预处理 : 像素操作:灰度化、二值化、直方图均衡化等,用于改善图像的对比度和亮度分布。 去噪:高斯滤波、中值滤波、

    2024年02月22日
    浏览(53)
  • 图像去雨-雨线清除-图像处理-(计算机作业附代码)

    多年来,图像去雨已经被广泛研究,使用传统方法和基于学习的方法。然而,传统方法如高斯混合模型和字典学习方法耗时,并且无法很好地处理受到严重雨滴影响的图像块。 通过考虑雨滴条状特性和角度分布,这个问题可以得到很好的解决。在本文中,通过引入任意方向的

    2024年02月12日
    浏览(50)
  • 图像处理与计算机视觉--第五章-图像分割-Canny算子

    2.1.Canny算子简单介绍 Canny算子是一种非常常用的边缘检测算子,其效果图如下所示: 2.2.Canny算子边缘检测指标 Canny算子是基于边缘检测来实现的,那么边缘检测的指标如下所示: (1)好的信噪比,即将非边缘点判定为边缘点的概率要低。 (2)高定位,检测出的边缘要在实际边缘中

    2024年02月07日
    浏览(56)
  • 图像处理/计算机视觉期刊投稿经验

    我不配,以后有机会再说吧。 我也不配,以后有机会再说吧。 2022年投过,一个月之后被编辑immediate reject, 原因是“the scope not aligning well with the theme interest and/or desired genres of TSP”。在邮件的末尾,编辑表示manuscript的选题“well motivated”并且“interesting”,主要担忧是所用到的

    2024年02月08日
    浏览(55)
  • 计算机视觉图像处理常用方法汇总

    光线进入眼睛:当光线从一个物体反射或散射出来,进入人的眼睛时,它们通过角膜和晶状体进入眼球内部。 聚焦光线:角膜和晶状体将光线聚焦在视网膜上。晶状体可以通过调整其形状来调节聚焦距离,使物体的图像清晰地映射在视网膜上。 光敏细胞感受光线:视网膜是

    2024年02月07日
    浏览(55)
  • 计算机图形图像技术(OpenCV核心功能、图像变换与图像平滑处理)

    1、显示图像 ①功能:在指定窗口中显示图像。 ②参数: name 为窗口的名字; image 为待显示的图像。 ③说明:可显示彩色或灰度的字节图像和浮点数图像,彩色图像数据按BGR顺序存储。 2、读入图像 ①功能:从指定文件读入图像。 ②参数: filename 为图像文件名,支持BMP、

    2024年02月03日
    浏览(50)
  • 计算机视觉学习笔记(图像的灰度与灰度级 图像的深度 图像噪声 图像处理)

    如果把白色和黑色之间按对数关系分为若干等级,称为灰度,灰度分为256阶,0为黑色,灰度就是没有色彩,RGB色彩分量全部相等(150,150,150)就代表灰度为150. 一幅图像中不同位置的亮度是不一样的,可用f(x,y)来表示(x,y)上的亮度。由于光是一种能量形式,因此亮度是非负

    2024年02月01日
    浏览(61)
  • 计算机视觉(2)——图像预处理

    二、图像预处理 2.1 介绍  2.2 特征提取方法 2.2.1 直方图 2.2.2 CLAHE 2.2.3 形态学运算 2.2.4 空间域处理及其变换 2.2.5 空间域分析及变换  (1) 均值滤波 (2)中值滤波 (3)高斯滤波 (4) 梯度Prewitt滤波 (5) 梯度Sobel滤波 (6) 梯度Laplacian滤波 (7) 其他滤波  2.2.6 频域分

    2024年02月03日
    浏览(64)
  • 图像处理与计算机视觉--第五章-图像分割-自适应阈值分割

      在图片处理过程中,针对铺前进行二值化等操作的时候,我们希望能够将图片相应区域内所有的信息提供保留。实验室环境下,相应的素材是模板化的,但是将实验室方法应用于现实环境中时,我们会发现光影环境对于效果的影响其实是很大的。在这种情况下进行处理,

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包