计算机视觉技术应用项目化教程 课件 项目3 基于Numpy处理图像_第1页
计算机视觉技术应用项目化教程 课件 项目3 基于Numpy处理图像_第2页
计算机视觉技术应用项目化教程 课件 项目3 基于Numpy处理图像_第3页
计算机视觉技术应用项目化教程 课件 项目3 基于Numpy处理图像_第4页
计算机视觉技术应用项目化教程 课件 项目3 基于Numpy处理图像_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目三:基于NumPy处理图像深入理解图像的数字化本质

COMPUTERVISION·计算机视觉系列课程任务导入:从生活实例看图像处理生活中的图像处理•手机里的“美图秀秀”,是如何实现“复古颗粒感”、“素描”等滤镜效果的?•还有那些有趣的“艺术二维码”,它们为什么既是二维码,又像一幅画?探索任务:NumPy的魔法这些酷炫效果背后,是对图像底层像素数据的直接操作。在Python世界里,NumPy是处理底层数据的最强工具之一。今天,我们就用它来亲手创造图像效果!看似神奇的滤镜效果

其实都是对像素数据的高效运算!学习目标:知识、能力与素质目标知识目标KNOWLEDGE●理解:深刻理解数字图像本质上是一个NumPy多维数组(`ndarray`)。●掌握:掌握灰度图像(二维数组)与彩色图像(三维数组)的表示方法。●熟悉:熟悉NumPy数组操作常用函数,如`np.zeros`,`np.ones`,`np.hstack`等。能力目标SKILLS✓生成:运用NumPy创建指定尺寸与颜色的灰度/彩色图像。✓操作:对图像进行裁剪、缩放、翻转、合并等几何变换。✓处理:实现图像二值化、通道分离与合并等像素级操作。✓应用:运用NumPy实现简单的图像加密与解密算法。素质目标QUALITIES▶逻辑思维:培养将视觉效果转化为数学运算与代码逻辑的思维能力。▶问题解决:提升在代码实现中发现、分析并解决问题的综合能力。▶创新意识:激发利用编程工具进行艺术创作与技术创新的浓厚兴趣。核心知识:NumPy与数字图像什么是NumPy?NumPy(NumericalPython)是Python生态中用于科学计算的基础核心库。它的核心优势在于提供了:高性能的多维数组对象ndarray大量用于数组操作的数学函数,比原生Python快得多图像的本质在计算机眼中,所有图像本质上就是多维数组。🎨灰度图像(2D)

二维数组。每个元素是0(黑)到255(白)的像素值。🖼️彩色图像(3D)

三维数组(高×宽×通道)。通道通常为3,分别代表B、G、R颜色分量。两个关键属性1.形状(shape)

返回一个元组,描述数组维度。例如彩色图通常为(H,W,3),直接告诉我们图像的高、宽和颜色通道数。2.类型(dtype)

返回数组元素的数据类型。在图像处理中,最常见的是np.uint8(8位无符号整数,范围0-255)。案例实战一:从零开始生成图像(灰度)学习目标掌握利用NumPy数组创建图像的核心逻辑,理解像素值与灰度图像的关系,并通过基础代码实现从纯色到随机噪点的不同灰度效果。importcv2importnumpyasnp#1.创建300x300的全黑灰度图像(像素值0)img_black=np.zeros((300,300),dtype=np.uint8)#2.切片操作:在中间区域绘制白色方块(像素值255)img_black[50:250,50:250]=255#3.随机填充:在中心绘制随机噪点方块img_black[100:200,100:200]=np.random.randint(0,256,size=[100,100])cv2.imshow("FinalImage",img_black);cv2.waitKey(0)效果预览:代码生成的三层灰度结构黑底·白色实心方块·随机噪点区域案例实战一:从零开始生成图像(彩色)核心目标掌握使用NumPy数组操作创建彩色图像的方法,理解图像在计算机中的多维数组表示形式,并通过简单的数组索引操作实现基础的图像绘制。💡实现思路拆解01画布创建:利用np.ones()生成一个300x300x3的全1数组,乘以255得到纯白背景。02绘制黄色块:基于OpenCV的BGR色彩模型,将中央区域的蓝色(B)通道值设为0,保留全量的绿色(G)和红色(R)。03生成噪点块:使用np.random.randint()生成三维随机数组,直接赋值给图像的中间区域,生成彩色噪点。#1.创建300x300的全白彩色图像(3通道)

img=np.ones((300,300,3),np.uint8)*255

#2.绘制黄色方块(B=0,G=255,R=255)

img[50:250,50:250,0]=0

#3.绘制彩色随机噪点方块

img[100:200,100:200]=np.random.randint(0,256,[100,100,3],np.uint8)

cv2.imshow("Result",img)案例实战二:图像的基本变换与组合(一)学习目标掌握利用NumPy切片操作实现图像的高效缩小,以及通过坐标计算将一个图像合并到另一个图像指定位置的核心逻辑。Python代码实现:图像缩放与合并importcv2importnumpyasnp#1.读取背景图和Logo图bg=cv2.imread(r"../cvpicture/HappyFish.jpg")logo=cv2.imread(r"../cvpicture/opencv-logo.png")#2.切片技巧:每隔10个像素取点,实现10倍缩小logo_small=logo[::10,::10]#3.获取尺寸并将logo合并到背景图右上角h,w=logo_small.shape[:2]bg[:h,bg.shape[1]-w:]=logo_small案例实战二:图像的基本变换与组合(二)🎯学习目标掌握使用NumPy切片实现图像的水平、垂直及双向翻转操作;并学习使用拼接函数将多幅图像组合成一张2x2的网格图。#1.生成三种翻转版本img_flip_h=img[:,::-1]#水平翻转(左右镜像)img_flip_v=img[::-1,:]#垂直翻转(上下镜像)img_flip_b=img[::-1,::-1]#水平+垂直翻转#2.拼接为2x2网格图img_grid=np.vstack((np.hstack((img,img_flip_h)),np.hstack((img_flip_v,img_flip_b))))🖼️最终拼接效果示意Original原图HorizontalFlip水平翻转VerticalFlip垂直翻转Bi-directionalFlip水平+垂直翻转案例实战三:图像的二值化处理核心目标将灰度图像转换为只有黑和白两种颜色的图像,简化图像信息,突出主体轮廓,为后续的轮廓检测、特征提取等任务打下基础。实现原理设定一个像素阈值(如127,即0-255中间值),遍历图像所有像素点:将像素值大于阈值的设为白色(255),小于等于阈值的设为黑色(0),从而完成二值化转换。importcv2,numpyasnp#1.读取灰度图:img_gray=cv2.imread("path",cv2.IMREAD_GRAYSCALE)mask=img_gray>127#2.创建布尔掩码:大于127的像素点为Trueimg_bin=mask*255#3.生成二值图:True转为255(白),False转为0(黑)案例实战四:趣味应用—图像加密与解密(加密篇)核心目标通过打乱图像像素的物理排列顺序,彻底改变图像的视觉呈现效果,使图像不可读,从而实现对图像内容的加密保护。加密核心原理1.数组展平:使用flatten()将二维图像矩阵转化为一维像素数组,打破原有空间结构。2.生成密钥:生成一个包含所有像素索引的序列并随机打乱,这个乱序索引表即“密码本”。3.像素重排:按照乱序的“密码本”索引,重新映射像素位置,生成无法识别的加密图像。Python代码实现#1.导入库并读取图像importcv2importnumpyasnpimg=cv2.imread("HappyFish.jpg");h,w=img.shape[:2]#2.展平图像并生成随机密钥img_flat=img.flatten()#展平为一维数组key=np.arange(img.size)#生成索引序列np.random.shuffle(key)#打乱顺序,作为"密码本"#3.按密钥重排像素实现加密,并恢复形状img_encrypted=img_flat[key].reshape(h,w,-1)cv2.imwrite("Encrypted_Fish.jpg",img_encrypted)案例实战四:趣味应用—图像加密与解密(解密篇)解密目标利用加密时生成的“密码本”,将打乱的像素点重新映射回原始位置,从而恢复图像的本来面目。核心原理基于同一个密钥(密码本)进行反向索引操作。

公式:原始像素[key[i]]=加密像素[i]#===解密过程:根据密钥反向映射===

img_decrypted_flat=np.zeros_like(img_encrypted_flat)

#循环完成解密映射,这是解密的关键步骤

foriinrange(total_pixels):img_decrypted_flat[key[i]]=img_encrypted_flat[i]

img_decrypted=img_decrypted_flat.reshape(h,w,-1)#恢复图像形状原始图像(Original)未经处理的原始数据

作为解密的“标准答案”加密图像(Encrypted)像素位置被打乱的乱码

无法直接识别内容解密图像(Decrypted)恢复像素顺序后

与原始图像完全一致项目总结:知识回顾与技能梳理💡核心思想:一切图像处理皆为数组操作(AllImageProcessingisArrayOperation)📚NumPy图像处理知识体系🎨NumPy生成图像•数组创建:np.zeros,np.ones|随机模块:np.random.randint

•基础切片:img[y1:y2,x1:x2]实现精确的区域定位🔄NumPy变换图像•翻转技巧:img[::-1](上下),img[:,::-1](左右)

•图像拼接:np.hstack(水平),np.vstack(垂直)组合创意🔧NumPy处理图像•二值化:利用布尔索引img>threshold提取特征

•简单加密:flatten+shuffle+reshape打乱像素排列🛠️关键技能掌握✅掌握了从0开始,使用数组创建基础几何图形的方法✅熟练使用数组切片进行图像区域的复制、粘贴与修改✅理解了翻转、拼接等图像变换背后的数组轴操作逻辑✅了解了像素级操作在二值化和图像加密中的应用潜力课后练习一、选择题1.可以通过哪个模块中的随机数函数,产生一系列的随机数组?

(A)array数组(B)np.random(C)内置数学运算(D)np.repeat()2.用于将多个图像在水平方向上拼接的函数是?

(A)np.repeat()(B)np.hstack()(C)np.vstack()(D)np.delete()二、填空题1.对图像进行灰度化处理能直接利用图像的灰度特性,对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论