相机噪声评估

news2024/11/15 21:28:03

当拥有一个相机,并且写了一个降噪的算法,想要测试降噪的应用效果。

相机在光线不足的情况下产生噪点的原因主要与以下几个因素有关:

感光元件的工作原理:相机的图像传感器是由数百万甚至数千万的感光元件(如CMOS或CCD中的像素)组成的。每一个感光元件都试图捕获进入相机的光。但是,光子的到达是随机的,当光线很弱时,这种随机性更为明显,导致不同感光元件记录的光子数存在较大的差异,从而引发噪点。
ISO的增加:为了在光线不足的环境中获得更亮的图像,相机会增加其ISO值,这实际上是增加了图像传感器的增益。但增加增益的同时,传感器的噪声也会增加,导致图像中出现更多的噪点。
热噪声:当相机工作时,传感器会产生热量。特别是在长时间曝光或高ISO值的情况下,这种热量会增加。传感器的温度越高,产生的热噪声就越明显,这也会在图像中引入噪点。
电路噪声:除了热噪声外,相机内部的电路(如模拟数字转换器)也会引入一定的噪声,特别是在低光照条件下。
信号与噪声比(SNR):在光线充足的环境中,感光元件接收到的光子数(信号)相对于噪声来说是较大的,因此SNR较高,图像质量较好。但在光线不足的环境中,感光元件接收到的光子数减少,而噪声并不显著减少,导致SNR降低,噪点变得更为明显。

无所谓因素,反正有噪声了。

测试设计
目测法:光线充足时肉眼很难发现噪声,而光线比较暗是噪声明显,得出相机光线差时工作效果不理想的结论。

量化噪声:
使用相机拍摄一块纯色色卡,观察噪声情况。

期望:
相机拍出的画面数值保持一致表明没有噪声。(纯黑看不见除外)
相机拍出的画面数值与画面均值比较有一些波动表明有噪声存在。

量化波动情况即量化噪声情况。

色卡
在这里插入图片描述
由于色卡不是纯色,所以需要通过一些操作找到纯色部分进行裁剪,再进行评估噪声。
代码使用ipynb 来测试。
裁剪代码:

# 导入一些不知道干什么的依赖库

import cv2
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

import cv2
import numpy as np
import matplotlib.pyplot as plt


# 输入图像路径
path1 = input("Enter path to the first image: ")
path2 = input("Enter path to the second image: ")

# 打开图片
image1 = cv2.imread(path1)
image2 = cv2.imread(path2)

image1_gray = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
image2_gray = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)

# 使用 matplotlib 展示结果
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].imshow(cv2.cvtColor(image1_gray, cv2.COLOR_BGR2RGB))
ax[0].set_title("image1 gray")
ax[0].axis('off')
ax[1].imshow(cv2.cvtColor(image2_gray, cv2.COLOR_BGR2RGB))
ax[1].set_title("image2 gray")
ax[1].axis('off')
plt.show()

在这里插入图片描述

边缘检测,找到最大的色块边界,边缘不连贯就加点滤波

# 使用 Canny 边缘检测
blurred = cv2.GaussianBlur(image1_gray, (5, 5), 0)
image1_edged = cv2.Canny(blurred, 100, 200)
image2_edged = cv2.Canny(image2_gray, 100, 200)

# 使用 matplotlib 展示结果
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].imshow(cv2.cvtColor(image1_edged, cv2.COLOR_BGR2RGB))
ax[0].set_title("image1 edged")
ax[0].axis('off')
ax[1].imshow(cv2.cvtColor(image2_edged, cv2.COLOR_BGR2RGB))
ax[1].set_title("image2 edged")
ax[1].axis('off')
plt.show()

在这里插入图片描述

边缘检测后 截取最大的纯色范围

# 寻找边缘检测后的图像中的轮廓
def find_contours(image, edged):
    # 寻找边缘检测后的图像中的轮廓
    contours, _ = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 假设色板是最大的轮廓
    max_contour = max(contours, key=cv2.contourArea)
    x, y, w, h = cv2.boundingRect(max_contour)

    # 提取色板
    palette = image[y+10:y+h-10, x+10:x+w-10]
    return palette

# 对两张图像分别提取色板
palette_image1 = find_contours(image1_gray, image1_edged)
palette_image2 = find_contours(image2_gray, image2_edged)
# 使用 matplotlib 展示结果
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].imshow(cv2.cvtColor(palette_image1, cv2.COLOR_BGR2RGB))
ax[0].set_title("Palette from Image 1")
ax[0].axis('off')
ax[1].imshow(cv2.cvtColor(palette_image2, cv2.COLOR_BGR2RGB))
ax[1].set_title("Palette from Image 2")
ax[1].axis('off')
plt.show()

在这里插入图片描述
到这里就截取出来可以评估的部分了
干正事吧

评估噪声

mean1 = np.mean(palette_image1)
mean2 = np.mean(palette_image2)

median1 = np.median(palette_image1)
median2 = np.median(palette_image2)

std1 = np.std(palette_image1, ddof=1)
std2 = np.std(palette_image2, ddof=1)

print(f"image src 评估的噪声水平: {std1}")
print(f"image ret 评估的噪声水平: {std2}")

fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].imshow(palette_image1-mean1)
ax[1].imshow(palette_image2-mean2)
plt.show()

在这里插入图片描述

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

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

相关文章

论文研读|Robust Watermarking of Neural Network with Exponential Weighting

目录 论文信息文章简介研究动机查询修改攻击Auto-Encoder训练水印图像检测检测结果 水印图像重构 研究方法水印生成水印嵌入版权验证 实验结果保真度(Fidelity)有效性(Effectiveness)&鲁棒性(Robustness&#xff0…

Apipost自动化测试

Apipost提供可视化的API自动化测试功能,使用Apipost研发人员可以设计、调试接口,测试人员可以基于同一数据源进行测试,Apipost 接口自动化功能在上次更新中进行了逻辑调整,带来更好的交互操作、更多的控制器选择,同时新…

【数据结构】深入探讨二叉树的遍历和分治思想(一)

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:数据结构 🔥该文章主要讲述二叉树的递归结构及分治算法的思想。 目录: 🌍前言:🌍…

使用react-router-dom在新标签页打开链接,而不是本页跳转

一般单页面应用&#xff0c;当你使用useNavigate时候的时候&#xff0c;用useNavigate来跳转&#xff0c;只能是在当前页面刷新跳转的&#xff0c;要想单独在一个tab页打开新页面&#xff0c;大概用三种方式。 第一种 使用link标签&#xff0c;配合target实现 <Link to&q…

求臻医学官网焕新升级

嗨&#xff0c;我的朋友们~ 求臻医学官网全面焕新升级了&#xff01; 新官网能否带给您更优质、更便捷的 在线服务体验&#xff1f; 来试试看吧&#xff01; “点击重新认识下我吧”&#x1f447; www.chosenmedtech.com 全新视觉界面 不一样的体验 新官网采用简洁大气的…

C++ PCL点云局部颜色变换

程序示例精选 C PCL点云局部颜色变换 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C PCL点云局部颜色变换》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用…

asp.net售后维修管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 售后维修管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 asp.net售后维修管理系统1 二、…

网络安全就业形势怎么样?

泻药&#xff0c;以下都是我本人的肺腑之言&#xff0c;是答主深耕职场多年&#xff0c;转战数家公司总结周围朋友的从业经验才总结出来的行业真相&#xff0c;真心希望帮助到还没有步入职场的大家&#xff0c;尤其是24届的应届毕业生&#xff0c;多掌握些就业信息就能少走一些…

QQ打不开找不到VCRUNTIME140.DLL怎么办?VCRUNTIME140.DLL修复方法分享

在现代社会&#xff0c;即时通讯软件已经成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;QQ作为中国最受欢迎的即时通讯软件之一&#xff0c;为我们提供了方便快捷的交流方式。然而&#xff0c;在使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之…

DOCKER本地仓库

概述 随着docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能&#xff0c;简单易上手&#xff0c;记录下来以备后用。 环境 centos&#xff1a;CentOS release 7.0 (F…

2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]

随着移动通信的发展和视频内容产业供给端的繁荣&#xff0c;流媒体视频平台已经成为互联网用户上网时长最长的应用之一。在线视频行业经历了十几年的规范发展阶段&#xff0c;在各大头部平台百花齐放的现状下&#xff0c;难以实现一家独大&#xff0c;但部分平台有领先优势&…

VP记录——The 2021 CCPC Weihai Onsite

网址 2021CCPC威海 赛时过题与罚时 A.Goodbye, Ziyin! 签到题&#xff0c;队友写的 #include<bits/stdc.h> using namespace std; int cnt[10], de[1000010]; int main() {int n;cin >> n;for(int i 1; i < n; i) {int u, v;scanf("%d %d", &…

Spring Boot自动加载

问&#xff1a;自动装配如何实现的&#xff1f; 答&#xff1a;简单来说就是自动去把第三方组件的Bean装载到IOC容器中&#xff0c;不需要开发人员再去写Bean相关的配置&#xff0c;在springboot应用里面只需要在启动类上去加上SpringBootApplication注解&#xff0c;就可以去实…

自动售货机销售数据分析与应用

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 摘要&#xff1a; 本案例将主要结合自动售货机的实际情况&#xff0…

天软特色因子看板(2023.10 第04期)

该因子看板跟踪天软特色因子A05005(近一月单笔流通金额占比(%)&#xff0c;该因子为近一个月单笔流通金额占比因子&#xff0c;用以刻画股票在收盘时&#xff0c;主力资金在总交易金额中所占的比重。。 今日为该因子跟踪第04期&#xff0c;跟踪其在SW801010 (申万农林牧渔) 中的…

浅述TSINGSEE视频技术与视频智能分析能力在城市治理中的典型应用场景

TSINGSEE青犀视频以“视频汇聚视频智能分析”为支撑&#xff0c;面向各委办局提供城市市域治理场景、城市基层治理场景的视频数字化、智能化、智慧化应用&#xff0c;推进城市治理体系和治理能力现代化。 安防视频汇聚系统EasyCVR视频综合管理平台支持接入与整合已建的社会视频…

MySQL 1 数据库概述知识

一、数据库概述 1. 为什么要使用数据库 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以“固化”&#xff0c;而持久化的实现过程大多通…

美妆SDK哪家便宜?

在今天的数字化时代&#xff0c;人工智能和机器学习正在改变我们的生活。特别是在美妆行业&#xff0c;这些技术的应用已经开始改变消费者的购物习惯和企业的营销策略。为了满足这个需求&#xff0c;美摄推出了一款美妆SDK&#xff0c;专为企业提供技术支持。一、美摄美妆SDK具…

简单聊聊低代码

在数字经济迅速发展的背景下&#xff0c;越来越多的企业开始建立健全业务系统、应用、借助数字化工具提升管理效率&#xff0c;驱动业务发展&#xff0c;促进业绩增长。在这一过程中&#xff0c;和许多新技术一样&#xff0c;低代码&#xff08;Low-code&#xff09;开发被推上…