转载:opencv-9-图像噪声以及评估指标 PSNR 与SSIM

article/2025/9/21 15:08:39

本文转自博客园博主SChen1024的博文:opencv-9-图像噪声以及评估指标 PSNR 与SSIM

开始之前#

我们在将 opencv 的图像显示在了 qt 的label 上, 我们能够将图显示在label 上, 用于显示我们的算法,
我们在 opencv 上一篇文章中介绍了 opencv 的核操作, 我们这里就要进入一个很重要的章节了,图像滤波操作, 也是图像核操作应用的一个很重要的章节,

那我们就从降噪的角度完整的讲一下, 并通过 opencv 核的方式进行图像算法操作, 【技术综述】一文道尽传统图像降噪方法 这篇文章写的还算比较完整, 也是传统的算法的一个综述过程,

目录#

目录
  • 开始之前
  • 目录
  • 前言
  • 图像降噪理论基础
    • 图像噪声的产生
    • 图像噪声的模型
  • 图像降噪操作
    • 噪声添加
    • 噪声量化方法
    • opencv 计算 PSNR 和 SSIM
    • 算法噪声数据
      • 椒盐噪声测试
      • 高斯噪声测试
  • 总结
  • 参考

前言#

数字成像过程中由于电噪声以及其他因素, 导致我们获取到的图像存在噪声,噪声出现在输入部分, 在后续的每个步骤都会受到影响, 所以在数字图像处理的前面必须要进行的一个步骤就是 图像降噪

每个做信号处理的都会接触到一类问题 , 信号降噪, 让人最头疼的一门课,真是感谢老师给过, 但是后面自己用到的时候反而感觉真的好用, 原来是这样, 然后就慢慢学会了怎么使用吧..(感觉还是弱鸡)
知乎可复现的图像降噪算法总结这篇文章列出了一个能够复现的图像降噪操作算法列表, 近年来实现了的算法可以见reproducible-image-denoising-state-of-the-art, 之后使用相应的文章进行算法实现吧.( 又立了一个 flag )

图像降噪理论基础#

图像降噪主要的目的是在进行去除图像噪声的同时保留尽可能多的主要特征, 对于人眼来说, 区分噪声还算比较容易, 但是对于计算机来说,输入的都是数据, 我怎么区分哪个是噪声, 哪个不是噪声呢, 这里就要引入噪声的理论基础了

图像噪声的产生#

我们在之前的章节介绍了图像的程序系统, 实际上在成像过程中可能由于点噪声, 量化过程等造成噪声,
实际上的噪声主要分为三种:

  1. 加性噪声: 与输入无关, f(x,y)=g(x,y)+n(x,y)f(x,y)=g(x,y)+n(x,y) 随着时间存在正负信号的不确定变化.

    噪声零和特点

    上图所示虚线代表真实信号,红蓝线表示的就是随机噪声信号,所有的随机噪声信号求和后结果为0。

    这里关于噪声的说明可以参考图像去噪算法简介

    噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。但在很多情况下,这样的描述方法是很复杂的,甚至是不可能的。而实际应用往往也不必要。通常是用其数字特征,即均值方差,相关函数等。因为这些数字特征都可以从某些方面反映出噪声的特征。

    我认为图像噪声的成因分类与常见图像去噪算法简介这篇文章关于噪声的分类部分讲的还比较细, 可以参考

    图像噪声的模型#

    由于我们认为噪声在时间尺度的随机性, 但是我们可以使用噪声的概率分布与概率密度函数进行描述, 那么我们就能将噪声根据其分布特点进行分类,
    我们稍微介绍一下常见的噪声模型吧

    一些重要的噪声概率密度函数

    噪声模型主要可以分为:

    • 高斯噪声,高斯噪声模型经常被用于实践中。
    • 脉冲噪声(椒盐噪声),图像上一个个点,也可称为散粒和尖峰噪声。
    • 伽马噪声
    • 瑞利噪声
    • 指数分布噪声
    • 均匀分布噪声

    这里能查到的资料很多, 可以看我们的参考部分, 内容都一样, 再写只是浪费时间和精力, 有兴趣的可以自己翻阅

    图像降噪操作#

    其实吧, 我就不应该讲那么多, 直接开始图像处理部分就行了, 为了开始进行图像处理, 我们要先进行一点小工作, 我们要按造以下步骤进行降噪算法的比较,

    1. 选择标准图像--- lena.png
    2. 添加噪声
    3. 量化噪声
    4. 降噪操作
    5. 量化结果值
    6. 比较结果

    在我们进行算法比对之前, 我们选择的是 lena 的图像, 加入随机噪声, 然后计算出来 一个噪声的比例, 进行降噪操作, 再次计算以下噪声参数, 看下效果值.

    如果是进行算法比较的时候, 最好选择现有的降噪的数据集进行比较, 比如, Kodak , BSD

    噪声添加#

    我们认为噪声是随机的, 我们生成随机数加在原始图像上便能够得到噪声图像, opencv 没有提供相应的实现, 但是知道原理了, 写起来都比较简单, 我比较喜欢
    图像处理基础(1):噪声的添加和过滤 使用的方法, 他使用的是 梅森旋转算法 来实现的伪随机算法,

    其实吧这里我也不懂, 但是随机数能用就行了, 我又不是数学家, 然后看到了 谈谈梅森旋转:算法及其爆破

    这里就不重复造轮子了, 直接复制他给出的代码就好,

void addSaltNoise(Mat &m, int num)
{// 随机数产生器std::random_device rd; //种子std::mt19937 gen(rd()); // 随机数引擎auto cols = m.cols * m.channels();for (int i = 0; i < num; i++){auto row = static_cast<int>(gen() % m.rows);auto col = static_cast<int>(gen() % cols);auto p = m.ptr<uchar>(row);p[col++] = 255;p[col++] = 255;p[col] = 255;}
}// 添加Gussia噪声
// 使用指针访问
void addGaussianNoise(Mat &m, int mu, int sigma)
{// 产生高斯分布随机数发生器std::random_device rd;std::mt19937 gen(rd());std::normal_distribution<> d(mu, sigma);auto rows = m.rows; // 行数auto cols = m.cols * m.channels(); // 列数for (int i = 0; i < rows; i++){auto p = m.ptr<uchar>(i); // 取得行首指针for (int j = 0; j < cols; j++){auto tmp = p[j] + d(gen);tmp = tmp > 255 ? 255 : tmp;tmp = tmp < 0 ? 0 : tmp;p[j] = tmp;}}
}

噪声量化方法#

这里其实涉及到图像质量评估的领域,可以参考图像质量评价概述(评估指标、传统检测方法)介绍的方法, 存在太多的计算方式,

我们必须选择一个量化噪声的方式进行图像质量的评估, 一般进行噪声评估手段就是噪声比(Signal to Noise Ratio,SNR),峰值信噪比(Peak Signal to Noise Ratio, PSNR) , 均方差值(Mean Square Error, MSE), 结构相似性(Structural SIMilarity, SSIM),

我们一个一个来看, 均方差值是用于比较两幅图像 K, I 的均方差值:

在这里插入图片描述

峰值信噪比PSNR衡量图像失真或是噪声水平的客观标准。2个图像之间PSNR值越大,则越相似。普遍基准为30dB,30dB以下的图像劣化较为明显。定义为:

在这里插入图片描述

为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。

SNR用于描述信号与噪声的比值

在这里插入图片描述

SSIM 描述两个图像的相似性, 通过三个进行比较, 亮度,对比度和结构, 参考图像质量评价指标之 PSNR 和 SSIM


在这里插入图片描述

本来不想写这么多的, 但是 opencv 给出了一个例程Similarity check (PNSR and SSIM) on the GPU, 提供了计算的方法, 自己不用去写了, 岂不是很爽, 所以上面就详细介绍了各个方法的使用.
官方给出了普通版本以及 GPU 加速的版本, 我们暂时只使用基础的版本就好,
PSNR返回一个浮点数,如果两个输入在30到50之间相似(越高越好)。
SSIM返回图像的MSSIM。这也是一个介于零和一之间的浮点数(越高越好),但是每个通道都有一个浮点数。因此,我们返回一个Scalar OpenCV数据结构:

double getPSNR(const Mat& I1, const Mat& I2)
{Mat s1;absdiff(I1, I2, s1);       // |I1 - I2|s1.convertTo(s1, CV_32F);  // cannot make a square on 8 bitss1 = s1.mul(s1);           // |I1 - I2|^2Scalar s = sum(s1);         // sum elements per channeldouble sse = s.val[0] + s.val[1] + s.val[2]; // sum channelsif( sse <= 1e-10) // for small values return zeroreturn 0;else{double  mse =sse /(double)(I1.channels() * I1.total());double psnr = 10.0*log10((255*255)/mse);return psnr;}
}
Scalar getMSSIM( const Mat& i1, const Mat& i2)
{const double C1 = 6.5025, C2 = 58.5225;/***************************** INITS **********************************/int d     = CV_32F;Mat I1, I2;i1.convertTo(I1, d);           // cannot calculate on one byte large valuesi2.convertTo(I2, d);Mat I2_2   = I2.mul(I2);        // I2^2Mat I1_2   = I1.mul(I1);        // I1^2Mat I1_I2  = I1.mul(I2);        // I1 * I2/*************************** END INITS **********************************/Mat mu1, mu2;   // PRELIMINARY COMPUTINGGaussianBlur(I1, mu1, Size(11, 11), 1.5);GaussianBlur(I2, mu2, Size(11, 11), 1.5);Mat mu1_2   =   mu1.mul(mu1);Mat mu2_2   =   mu2.mul(mu2);Mat mu1_mu2 =   mu1.mul(mu2);Mat sigma1_2, sigma2_2, sigma12;GaussianBlur(I1_2, sigma1_2, Size(11, 11), 1.5);sigma1_2 -= mu1_2;GaussianBlur(I2_2, sigma2_2, Size(11, 11), 1.5);sigma2_2 -= mu2_2;GaussianBlur(I1_I2, sigma12, Size(11, 11), 1.5);sigma12 -= mu1_mu2;Mat t1, t2, t3;t1 = 2 * mu1_mu2 + C1;t2 = 2 * sigma12 + C2;t3 = t1.mul(t2);              // t3 = ((2*mu1_mu2 + C1).*(2*sigma12 + C2))t1 = mu1_2 + mu2_2 + C1;t2 = sigma1_2 + sigma2_2 + C2;t1 = t1.mul(t2);               // t1 =((mu1_2 + mu2_2 + C1).*(sigma1_2 + sigma2_2 + C2))Mat ssim_map;divide(t3, t1, ssim_map);      // ssim_map =  t3./t1;Scalar mssim = mean( ssim_map ); // mssim = average of ssim mapreturn mssim;
}

算法噪声数据#

我们完成了噪声添加以及噪声的量化, 我们来试一下, 给图像随机添加一定的噪声, 然后看下相应的参数变化情况对比来看就好

椒盐噪声测试#

我们先来测试椒盐噪声 分别计算没有噪声的图, 以及添加了 1000个 和10000个噪声的数据结果, 并将后面两个显示出来

void MainWindow::testFunc1(void)
{// 添加椒盐噪声 并计算 PSNR和 SSIMcv::Mat salt_img;double psnr = 0;cv::Scalar mssim;QString res_temp = "Salt-%1 : psnr:%2, mssim: B:%3 G:%4 R:%5 ";QString res_str;// 计算三组图像的参数 0, 1000, 10000// 复制原始图像, 添加噪声, 计算 psnr和ssim  显示在 ui上salt_img = gSrcImg.clone();addSaltNoise(salt_img,0);psnr = getPSNR(gSrcImg, salt_img);mssim = getMSSIM(gSrcImg,salt_img);res_str = res_temp.arg(0).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);salt_img = gSrcImg.clone();addSaltNoise(salt_img,1000);psnr = getPSNR(gSrcImg, salt_img);mssim = getMSSIM(gSrcImg,salt_img);res_str = res_temp.arg(1000).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);// 左侧显示 1000 噪声 右侧显示 10000 噪声ShowMatOnQtLabel(salt_img,ui->lb_src);salt_img = gSrcImg.clone();addSaltNoise(salt_img,10000);psnr = getPSNR(gSrcImg, salt_img);mssim = getMSSIM(gSrcImg,salt_img);res_str = res_temp.arg(10000).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);ShowMatOnQtLabel(salt_img,ui->lb_dst);
}

1000 和 10000 的椒盐噪声对比

我们可以直接计算得到椒盐噪声 psnr 和 ssim 都是越大越好的, 可以明显的看到图像质量退化

 
Salt-0 : psnr:0, mssim: B:1 G:1 R:1 Salt-1000 : psnr:27.7528, mssim: B:0.865341 G:0.870555 R:0.914122 Salt-10000 : psnr:17.8062, mssim: B:0.311999 G:0.327485 R:0.493874

高斯噪声测试#

高斯噪声我们测试了四组 分别使用参数(0,1) (0,10)(10,1)(10,10) 作为高斯参数, 最终得到后面的图, 然后计算得到的结果, 我们做的结果比较简单, 可以参考数字图像处理——添加高斯噪声&椒盐噪声, 给出了很多的图, 可以参考学

void MainWindow::testFunc2(void)
{// 添加高斯噪声 并计算 PSNR和 SSIMcv::Mat guass_img;double psnr = 0;cv::Scalar mssim;QString res_temp = "gauss-%1- %2 : psnr:%3, mssim: B:%4 G:%5 R:%6 ";QString res_str;// 计算三组图像的参数 (0,1) (0,10), (10,1), (10,10)// 复制原始图像, 添加噪声, 计算 psnr和ssim  显示在 ui上guass_img = gSrcImg.clone();addGaussianNoise(guass_img,0,1);psnr = getPSNR(gSrcImg, guass_img);mssim = getMSSIM(gSrcImg,guass_img);res_str = res_temp.arg(0).arg(1).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);guass_img = gSrcImg.clone();addGaussianNoise(guass_img,0,10);psnr = getPSNR(gSrcImg, guass_img);mssim = getMSSIM(gSrcImg,guass_img);res_str = res_temp.arg(0).arg(10).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);guass_img = gSrcImg.clone();addGaussianNoise(guass_img,10,1);psnr = getPSNR(gSrcImg, guass_img);mssim = getMSSIM(gSrcImg,guass_img);res_str = res_temp.arg(10).arg(1).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);guass_img = gSrcImg.clone();addGaussianNoise(guass_img,10,10);psnr = getPSNR(gSrcImg, guass_img);mssim = getMSSIM(gSrcImg,guass_img);res_str = res_temp.arg(10).arg(10).arg(psnr).arg(mssim.val[0]).arg(mssim.val[1]).arg(mssim.val[2]);ui->pt_log->appendPlainText(res_str);
}

在这里插入图片描述

gauss-0- 1 : psnr:46.8791, mssim: B:0.991811 G:0.991622 R:0.992751 
gauss-0- 10 : psnr:28.1229, mssim: B:0.614219 G:0.608773 R:0.648285 
gauss-10- 1 : psnr:28.5293, mssim: B:0.978448 G:0.980308 R:0.987926 
gauss-10- 10 : psnr:25.3511, mssim: B:0.605665 G:0.600491 R:0.646768 

总结#

原本想把滤波一起做了的, 但是越写越, 就不做太多的处理了, 我们算是介绍了噪声的来源, 噪声的模型, 以及个噪声的量化方式,
然后介绍了图像添加噪声的方法 我们分别给图像添加椒盐噪声与高斯噪声, 然后分别量化了噪声的结果值, 进行对比展示,

示例的图不是很多, 程序是在代码库里面的, 可以直接去自己实现, 然后进行 进行更多图的展示

参考#

  1. 《高斯噪声_百度百科》. 见于 2020年4月30日. https://baike.baidu.com/item/高斯噪声.
  2. 知乎专栏. 《【技术综述】一文道尽传统图像降噪方法》. 见于 2020年4月29日. https://zhuanlan.zhihu.com/p/51403693.
  3. 知乎专栏. 《可复现的图像降噪算法总结》. 见于 2020年4月29日. https://zhuanlan.zhihu.com/p/32502816.
  4. 《梅森旋转算法》. 收入 维基百科,自由的百科全书, 2019年11月4日. https://zh.wikipedia.org/w/index.php?title=梅森旋转算法&oldid=56745942.
  5. 《实现灰度图像峰值信噪比计算_人工智能_松子茶的专栏-CSDN博客》. 见于 2020年4月30日. https://blog.csdn.net/songzitea/article/details/17529445.
  6. 《数字图像处理-噪声 - Mohanson》. 见于 2020年4月30日. http://accu.cc/content/pil/noise/.
  7. 《图像处理基础(1):噪声的添加和过滤 - Brook_icv - 博客园》. 见于 2020年4月30日. https://www.cnblogs.com/wangguchangqing/p/6372025.html.
  8. 《图像处理PSNR及其计算(OpenCV和matlab实现)_人工智能_无机器不学习-加大码的分享-CSDN博客》. 见于 2020年4月30日. https://blog.csdn.net/laoxuan2011/article/details/51519062.
  9. 《图像的 SNR 和 PSNR 的计算 - rldts - 博客园》. 见于 2020年4月30日. https://www.cnblogs.com/qrlozte/p/5340216.html.
  10. 《图像去噪算法简介 - InfantSorrow - 博客园》. 见于 2020年4月29日. https://www.cnblogs.com/CCBB/archive/2011/01/06/1929033.html.
  11. 《图像噪声的成因分类与常见图像去噪算法简介_Java_qq_27606639的博客-CSDN博客》. 见于 2020年4月30日. https://blog.csdn.net/qq_27606639/article/details/80912071.
  12. 《图像质量评估指标 SSIM / PSNR / MSE_人工智能_兔角与禅-CSDN博客》. 见于 2020年4月30日. https://blog.csdn.net/edogawachia/article/details/78756680.
  13. 《图像质量评价概述(评估指标、传统检测方法)_人工智能_qq_23304241的博客-CSDN博客》. 见于 2020年4月30日. https://blog.csdn.net/qq_23304241/article/details/80953613.
  14. 《影像降噪》. 收入 维基百科,自由的百科全书, 2018年9月20日. https://zh.wikipedia.org/w/index.php?title=影像降噪&oldid=51354600.

作者: SChen1024

出处:https://www.cnblogs.com/hugochen1024/p/12812501.html

版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

分类: opencv

http://chatgpt.dhexx.cn/article/tkONcSlL.shtml

相关文章

三维图形程序设计

三维图形程序设计 基础知识计算机图形学概述图形与图像图形流水线图形开发库GPU OpenGL编程OpenGL的功能OpenGL的两种编程模式OpenGL相关的库OpenGL基本语法程序流程 变换(Transformation)变换的步骤几何变换投影变换视口变换 光照光照明模型phong模型Blinn-Phong光照模型openg…

Python图像处理

一、简介 实现计算机视觉任务的过程中&#xff0c;不可避免地需要对图像进行读写操作以及图像预处理操作&#xff0c;下面介绍两个常用的Python图像处理库&#xff1a;OpenCV和Pillow。 OpenCV全称是由英特尔公司资助的开源计算机视觉库。 它由一系列C函数和少量C&#xff0b…

OpenCV-Python图形图像处理:制作雪花飘落特效

☞ ░ 老猿Python博文目录&#xff1a;https://blog.csdn.net/LaoYuanPython ░ 一、引言 前几天有博友咨询&#xff0c;能否在视频中实现雪花飘落的效果&#xff0c;答案是肯定的。老猿前天简单构思了一下&#xff0c;利用周末时间&#xff0c;使用OpenCV-Python通过图像循环…

图像处理程序的设计与实现

一、要求&#xff1a; 1.利用Qt和QPainter实现一个图像处理程序&#xff0c;有菜单栏、工具栏和状态栏 2.有图像选择对话框&#xff0c;以选择和读取图像 3.状态栏显示图像的像素&#xff0c;位深&#xff0c;导入图像的路径和鼠标所在点的像素点坐标 4.可以对图像缩放&#xf…

C#图形化程序设计知识总结

图形化程序设计 用可视化的界面进行程序设计 逃出控制台丑丑的黑框 知识导图 图为图形化程序设计的内容清单 Windows窗体程序设计 窗体设计 窗体是一个窗口或对话框&#xff0c;是存放各种控件的容器&#xff0c;可用来向用户显示信息 一个Windows应用程序可以包含多个窗体 …

python 图像分割_5行Python代码实现图像分割的步骤详解

众所周知图像是由若干有意义的像素组成的&#xff0c;图像分割作为计算机视觉的基础&#xff0c;对具有现有目标和较精确边界的图像进行分割&#xff0c;实现在图像像素级别上的分类任务。 图像分割可分为语义分割和实例分割两类&#xff0c;区别如下&#xff1a; 语义分割&am…

台式计算机驱动程序未被安装,计算机图形驱动程序安装失败的原因及其解决方法...

由于许多问题&#xff0c;兼容性和数字签名&#xff0c;计算机图形驱动程序可能会失败. 很有可能没有启用Windows安装程序服务. 每个问题都有不同的解决方案. 如何确定问题的原因&#xff0c;可以借用软件进行检测&#xff0c;也可以尝试一种然后修复. 如果由于Windows Install…

LabVIEW程序框图保存为图像

LabVIEW程序框图保存为图像 想将LabVIEW程序框图保存为标准图像文件&#xff0c;以便可以在LabVIEW之外查看或在文档中使用。如何将程序框图生成为图像&#xff1f; 可以通过打印VI或以编程方式获取LabVIEW程序框图图像。 要打印VI&#xff0c;请使用以下步骤&#xff1a; …

Python图形绘制程序设计

第1关:绘制多边形 任务描述 本关任务:依照案例教程例6-2,用多边形函数绘制各种多边形图形。 编程要求 根据提示,在右侧编辑器补充代码。 测试说明 平台会对你编写的代码进行测试: 开始你的任务吧,祝你成功! 第2关:绘制五角星图形 任务描述 本关任务:绘制一个黄色…

升级计算机的图形卡和驱动程序,如何升级计算机图形卡,计算机图形卡升级方法图...

[哈哈IT网络中关村显卡]如何升级计算机显卡&#xff0c;通常我们会对显卡驱动程序做进一步的升级&#xff0c;这有助于提高显卡的性能&#xff0c;达到达到显卡升级的目的. 显卡驱动程序升级使计算机显示效果更好&#xff0c;显示效果也得到了提高. 下面介绍如何升级计算机图形…

计算机图形驱动程序原理,您知道更新计算机图形驱动程序的作用吗?怎么做

购买或使用计算机时&#xff0c;为了获得更好的视觉体验并避免显示的AV质量&#xff0c;我们通常在选择时安装独立的显卡&#xff01;使用计算机时&#xff0c;有时第三方软件会提示您更新计算机图形驱动程序&#xff0c;但有时却没有&#xff01;更新计算机图形驱动程序有什么…

VTK图形图像开发进阶-学习笔记 01 VTK概述

1.1 VTK概述 1.1.1VTK是什么 1.1.2VTK能做什么 1.1.3如何获取VTK源码 略 1.1.4 VTK学习资源 略 1.2 VTK编译安装 略 1.3创建一个简单的VTK程序 步骤一&#xff1a;创建目录A&#xff1a; D:\VTK\example\Chap01 步骤二&#xff1a;在目录A中创建txt文件&#xff1a;CMa…

用Java完成图形图像绘制

我们要来图形图像的处理&#xff0c;目标就是滑动鼠标绘制一根直线&#xff0c;绘制一个矩形&#xff0c;绘制一个圆&#xff0c;并且绘制任意的一个三角形&#xff0c;和任意的一个等腰三角形 我们先创建一个DrawPad类&#xff0c;在这个类里面完成一些操作 步骤1、创建一个…

图形图像学习随笔:计算机图形学的一些基本概念

本文内容摘抄于&#xff1a;《计算机图形学的概念》 一、计算机图形学的范畴 1、图形主要分为两类&#xff0c;一类是基于线条信息表示的&#xff0c;如工程图、等高线地形图、曲面的线框图等&#xff1b;另一类是明暗图&#xff0c;也就是通常所说的真实感图形&#xff1b; …

升级计算机的图形卡和驱动程序,驱动程序向导如何更新图形卡驱动程序?更新图形驱动程序方法说明...

有许多用户使用驱动程序向导&#xff0c;并且一些新用户不清楚更新图形驱动程序的教程. 今天&#xff0c;我将带给您有关更新图形驱动程序的教程. 希望它能对您有所帮助. 我们首先打开计算机上已安装的驱动程序向导软件&#xff0c;然后进入软件&#xff0c;然后单击页面“立即…

大数据学习内容有哪些?大数据学习路线图

很多人想学习大数据,但是都不清楚大数据学习应该怎么下手。大数据开发工程师简单整理了一下大数据学习路线图,希望对于学习大数据的朋友,有一定的帮助。 总的来说,如果是从零基础开始学习,总共分为八个阶段 第一阶段:HTML+css 第二阶段:JAVASE学习 第三阶段:javaweb …

(转载)大数据学习路线大数据学习路线

一、背景介绍 本人目前是一名大数据工程师&#xff0c;项目数据50T&#xff0c;日均数据增长20G左右&#xff0c;个人是从Java后端开发&#xff0c;经过3个月的业余自学成功转型大数据工程师。 二、大数据介绍 大数据本质也是数据&#xff0c;但是又有了新的特征&#xff0c…

2022最全大数据学习路线(建议收藏)

【不要错过文末彩蛋】 申明&#xff1a; 本文旨在为【大数据自学者|大数据专业学生|工资低的程序员&#xff08;Java/Python等&#xff09;】提供一个从入门到入职的的大数据技术学习路径&#xff0c;不适合5年以上大数据工程师的进阶学习。 前言&#xff1a; 一、个人介绍 …

大数据学习的必要性,让你走向时代前沿!

大数据及人工智能可谓是目前最热门的行业,从走在前沿的科技公司,到努力创新的传统行业,几乎都想把握这个新“风口”。一部分学校也走上了大数据的道路。 在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习高大上大数据 ,小…