记录mac上图像处理

自适应二值化

import cv2# 读取图像
image = cv2.imread('/Users/sinkarsenic/Downloads/用所选项目新建的文件夹/2.jpg', 0)  # 使用灰度模式读取图像# 自适应二值化
adaptive_thresh = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 31, 2)# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Adaptive Thresholding', adaptive_thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

自适应二值化是处理光照不均匀或阴影存在的图像时常用的一种方法,自适应二值化考虑了图像不同区域的局部亮度和对比度,使得在光照不均匀或者阴影存在的情况下,也能得到较好的二值化效果。具有以下优点:

  1. 局部适应性:自适应二值化根据图像的局部区域计算阈值,因此能够更好地适应图像中局部光照变化。这意味着即使在图像的不同部分具有不同的光照条件或对比度时,也可以得到准确的二值化结果。

  2. 减少阴影影响:由于自适应二值化考虑了局部光照条件,因此可以减少阴影对二值化结果的影响。在存在阴影的情况下,全局阈值可能无法正确地将阴影部分和目标部分分离,而自适应二值化则可以更好地处理这种情况。

  3. 无需手动调整阈值:与全局阈值相比,自适应二值化无需手动设置全局阈值,而是根据图像的局部统计信息自动计算阈值。这样可以减少用户的主观干预,提高了处理图像的效率和鲁棒性。

  4. 适用性广泛:自适应二值化适用于各种光照条件下的图像处理任务,包括文档扫描、目标检测、图像分割等。它能够处理不同类型的图像,包括自然场景、工业图像等。

  5. 易于实现:Matlab提供了自适应二值化的实现方法,使得应用者可以方便地使用这一技术。只需几行代码就可以对图像进行自适应二值化处理,因此易于实现和集成到应用中。

综上所述,自适应二值化是一种简单且有效的处理光照不均匀或阴影存在的图像的方法,具有较高的实用性和适用性。除了自适应二值化之外,还有一些其他的图像处理技术可以达到类似的效果,尤其是在处理光照不均匀或者阴影存在的情况下。以下是一些常用的方法:

1.局部阈值化(Local Thresholding):与自适应二值化类似,但是不使用局部统计信息来计算阈值,而是将图像分成多个局部区域,然后在每个局部区域内计算阈值。
受到噪声的影响。如果图像中存在噪声,局部阈值化可能会导致阈值计算的不准确性。
计算成本较高。在图像的每个局部区域内计算阈值可能会增加计算成本,特别是对于大型图像或需要实时处理的应用而言。

2.基于梯度的方法(Gradient-based Methods):通过计算图像的梯度或边缘来确定阈值。例如,可以使用Sobel算子或Canny边缘检测来检测图像的边缘,然后应用阈值。
对参数敏感。一些梯度算子(如Sobel)具有参数(如核大小),对于不同的图像和应用,需要调整参数以获得最佳结果。
对噪声敏感。由于梯度算子对噪声比较敏感,因此需要在使用之前对图像进行平滑处理。

  1. 颜色空间转换(Color Space Transformation):有时,将图像从RGB颜色空间转换到其他颜色空间(如HSV或LAB),然后应用阈值化,可以更好地处理光照变化。
    有时并不适用。某些场景下,颜色空间转换可能不适用于处理光照不均匀的图像,尤其是当光照变化不仅仅是亮度的变化时。
    对计算资源要求较高。颜色空间转换可能需要较多的计算资源,特别是对于高分辨率的图像而言。

4基于深度学习的方法(Deep Learning-based Methods):使用深度学习模型(如卷积神经网络)来学习图像的特征并进行二值化。这种方法通常需要大量的标记数据进行训练,但在某些情况下可以提供更好的性能。
需要大量数据和计算资源。深度学习模型通常需要大量的标记数据进行训练,并且在实际应用中可能需要大量的计算资源和时间进行训练和推理。
需要调优。深度学习模型的性能通常受到超参数选择、网络结构设计等因素的影响,需要进行调优和优化才能达到最佳性能。

  1. 多阈值分割(Multi-threshold Segmentation):将图像分成多个灰度级别的区域,并为每个区域选择适当的阈值。这种方法适用于图像中存在多个不同亮度或对比度区域的情况。
    需要手动设置阈值。多阈值分割方法通常需要手动设置阈值,这可能需要一定的领域知识和试验来选择合适的阈值。
    对参数敏感。选择不同的阈值可能会导致不同的分割结果,因此需要谨慎选择阈值。

这些方法中的每一种都有其适用的场景和局限性,具体选择取决于图像特点和需求。在实际应用中,通常需要尝试不同的方法并根据结果进行调整和优化。

霍夫变换

import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('/Users/sinkarsenic/Downloads/用所选项目新建的文件夹/1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用霍夫变换检测直线
lines = cv2.HoughLines(gray, 1, np.pi/180, threshold=360)  # 调整threshold参数# 构建霍夫空间图像
h, w = gray.shape[:2]
hough_space = np.zeros((h, w), dtype=np.uint8)
for line in lines:rho, theta = line[0]a = np.cos(theta)b = np.sin(theta)x0 = a * rhoy0 = b * rhox1 = int(x0 + 1000 * (-b))y1 = int(y0 + 1000 * (a))x2 = int(x0 - 1000 * (-b))y2 = int(y0 - 1000 * (a))cv2.line(hough_space, (x1, y1), (x2, y2), (255), 2)# 显示霍夫空间
plt.imshow(hough_space, cmap='gray')
plt.title('Hough Space')
plt.xlabel('Theta (radians)')
plt.ylabel('Rho (pixels)')
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是Java反射:作用、使用方法、原理三方面解析

Java反射是Java进阶编程内容之一,掌握反射应用与原理,有助于我们理解一些框架(Spring)和插件(junit)的运行原理。 一、Java反射的作用 简单来说,Java反射主要有两个作用: 使得程序…

【漏洞复现】WordPress_Wholesale_Market admin-ajax.php 任意文件读取漏洞

0x01 产品简介 WordPress Wholesale Market是一个WordPress主题,专门设计用于创建批发市场和在线商城网站。该主题提供了许多功能和设计元素,使您能够轻松地构建一个功能强大的批发市场平台,以满足批发商和零售商的需求。 0x02 漏洞概述 WordPress Wholesale Market存在任…

VL02N交货单清除字段:VLSTK(分配状态)

VL02N交货单清除字段:VLSTK(分配状态) 通过查找增强对应的BADI:LE_SHP_DELIVERY_PROC 修改方法:IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER,代码如下:

AngularJS中文手册后半部分学习

AngularJS 简介 AngularJS的中文参考手册 AngularJS 表格 结合ng-repeat命令 <div ng-app"myApp" ng-controller"customersCtrl"><table><tr ng-repeat"x in names"><td>{{ x.Name }}</td><td>{{ x.Coun…

#QT获取ONENET云平台数据(草稿)

1.基本目标 &#xff08;1&#xff09;查询ONENT云平台的数据 &#xff08;2&#xff09;查询网络时间 &#xff08;3&#xff09;网络音乐拉取&#xff08;作为背景音乐&#xff09;&#xff0c;音量可调 2.制作UI界面 &#xff08;1&#xff09;串口图标的制作方法 &…

天星金融(原小米金融)履行社会责任,提高社保政策知晓度

二十大报告指出“为民造福是立党为公、执政为民的本质要求“&#xff0c;人民幸福安康是推动高质量发展的最终目的。社会保障作为维护社会公平、增进人民福祉的基本制度&#xff0c;既是“安全网”也是“稳定器”&#xff0c;发挥着改善民生的重要作用。为进一步提升人民群众对…

如何解决DDoS攻击?群联科技做出回答。

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意利用多台傀儡机协同发起大规模网络流量&#xff0c;旨在压垮目标系统或网络资源&#xff0c;使其无法正常服务的网络攻击手段。由于现代计算机和网络性能的提升&#xff0c;单点发起的DoS攻击已难以奏效&#xff…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…

速盾:不备案能用国内cdn吗?

在中国&#xff0c;所有的CDN&#xff08;内容分发网络&#xff09;服务都需要进行备案&#xff0c;这是根据相关法律法规的要求。备案是指网站所有者必须向中国互联网络信息中心&#xff08;CNNIC&#xff09;提交相关信息&#xff0c;以便在中国境内使用CDN服务。 备案的目的…

博客网站/部署服务器---继上篇前端页面接入后端

目录 准备工作 创建用户类博客类与连接数据库 创建博客类 创建用户类 创建连接数据库工具类 实现对数据库数据博客的操作 实现对数据库用户的操作 创建数据库语句 登录页面 前端 后端 博客列表 前端 注销登录 写入数据 判断用户是否登录 替换页面用户昵称 后…

Scala详解(4)

Scala 面向对象 案例 定义类表示矩形(Rectangle)&#xff0c;提供对外获取周长(girth)和面积(area)的函数&#xff0c;并且为这个矩形类提供一个子类表示正方形(Square) package com.fesco.exer ​ object ObjectDemo1 { ​def main(args: Array[String]): Unit { ​val r …

永恒之蓝上线CS

该文介绍了在内网环境下&#xff0c;利用永恒之蓝漏洞&#xff08;EternalBlue&#xff09;将攻击者控制台&#xff08;CS&#xff09;上线的方法。前提条件是目标机器可上网、无防火墙和杀毒软件&#xff0c;并且存在永恒之蓝漏洞。使用Erebus插件的eterblue功能&#xff0c;通…

xpath的使用以及原理-元素定位

# 查找文本框输入文本 driver.find_element(By.CLASS_NAME,"nav-search-input").send_keys("i_cecream查找到了") #查找到之后点击 driver.find_element(By.CLASS_NAME,"nav-search-btn").click()time.sleep(30)selenium4的解析。 client调用se…

Kimi智能助手:您的个性化AI伙伴

目录 智能对话伙伴:kimi 功能部分 对话能力:多语言支持与深度交流

2024团体程序设计天梯赛L1-103 整数的持续性

题目链接L1-103 整数的持续性 #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; struct node{int x;int d; }p[2000]; bool cmp(node a, node b) {if (a.d b.d) return a.x < b.x;return a.d>b.d; } int cnt, cntt; v…

信号----硬件中断

硬件中断 键盘组合键是向进程发送信号&#xff0c;那么键盘数据是如何输入到内核中&#xff0c;然后变成信号的&#xff1f;这个信号又是由谁发送给进程的&#xff1f; 当键盘被按下&#xff0c;操作系统先知道用户用键盘输入了内容 那么操作系统是如何知道键盘上有内容了&…

【Camera Sensor Driver笔记】二、点亮指南之Sensor Module XML

Camera Sensor module XML详解&#xff1a; cameraId 与 slot id 一一对应 &#xff08;即&#xff1a;dtsi中相对应的sensor的 cell-index &#xff09; moduleName 模组厂名称 sensorName sensor 名称 actuatorName 马达名称 oisName …

学习亚马逊云科技AWS云计算技术的三款官方免费3A游戏大作

玩3A大作免费电脑游戏&#xff0c;就能成为AWS云架构师、云开发大&#x1f42e;&#xff1f;这么好的事尊的假的&#xff1f;小李哥今天就来给大家介绍&#xff0c;如何通过玩AWS官方的定制版虚拟人生、炉石传说和密室逃脱游戏学习AWS。这三个游戏完全免费&#xff0c;没有任何…

如何利用pg_dump和pg_restore迁移从一个PostgreSQL服务器到另一个服务器,同时保持一致性与高效性?

文章目录 解决方案1. 使用pg_dump导出数据2. 将导出的数据复制到目标服务器3. 使用pg_restore导入数据保持一致性与高效性的策略一致性高效性 示例代码导出数据复制数据到目标服务器在目标服务器上解压并导入数据 PostgreSQL数据库的迁移是一个常见的任务&#xff0c;特别是在升…

如何在PostgreSQL中使用CTE(公共表表达式)来简化复杂的查询逻辑?

文章目录 解决方案步骤示例代码 结论 在处理复杂的SQL查询时&#xff0c;我们经常会遇到需要多次引用子查询或中间结果的情况。这可能会使得查询变得冗长且难以理解。为了解决这个问题&#xff0c;PostgreSQL&#xff08;以及其他一些SQL数据库系统&#xff09;引入了公共表表达…