目录

前言

实验项目一 图像的基本操作和基本运算

1.【图像的读取操作】

2 【图像的基本运算】

3【 图像的几何变换】

4【图像的灰度变换】


前言

数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

数字图像处理的主要目的一般来讲可以划分为:提高图像的视感质量;提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利,提取特征或信息的过程是模式识别或计算机视觉的预处理;图像数据的变换、编码和压缩,以便于图像的存储和传输。

数字图像处理常用方法有以下几个方面:图像变换;图像编码压缩;图像增强和复原;图像分割;图像描述;图像分类(识别)。

为了熟悉和锻炼数字图像处理能力,通过实验的方法进行一些简单的数字图像处理操作。使用的编程语言是python。使用的图片在文章末尾(侵权联系删除)

实验项目一 图像的基本操作和基本运算

一、实验目的:了解图像处理软件的使用,掌握图像的读取,显示,保存;以及图像的基本运算和基本操作。

二、实验要求:会编程实现图像的读取、显示、保存;会编程实现图像的加、减、乘、除运算;会进行图像的缩放、旋转、平移、镜像等几何变换;会通过编程实现彩色图像的灰度化和二值化,以及通过点运算实现图像的增强变换,同时会通过直方图均衡化和规定化实现图的像增强。

三、实验内容

1.【图像的读取操作】

读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题

from skimage import io,color
from matplotlib import pyplot as plt
import numpy as np
#中文显示
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#读取
img=io.imread('./picture/001.jpg')
#灰度变换
img2=color.rgb2gray(img)
#二值化
img3=np.zeros((img2.shape[0],img2.shape[1]))
mid=(np.max(img2)-np.min(img2))/2+np.min(img2)
two=lambda x: 1 if x > mid else 0#lambda
for i in range(img2.shape[0]):for j in range(img2.shape[1]):# if img2[i][j]>mid:#     img3[i][j]=1# else:#     img3[i][j]=0#使用lambda函数进行判断img3[i][j]=two(img2[i][j])
plt.subplot(131),plt.imshow(img,'gray'),plt.title('RGB')
plt.subplot(132),plt.imshow(img2,cmap=plt.cm.gray),plt.title("灰度图")
plt.subplot(133),plt.imshow(img3,cmap=plt.cm.gray),plt.title("二值图")
plt.show()

结果:

2 【图像的基本运算】

对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成六个子窗口来分别显示,注上文字标题。

from skimage import io,color
from matplotlib import pyplot as plt
import numpy as np
img1=io.imread(r'./01 (1).jpg')
img2=io.imread(r'./01 (2).jpg')
row=np.min((img1.shape[0],img2.shape[0]))
col=np.min((img1.shape[1],img2.shape[1]))
for i in range(3):img1=img1[:row,:col,:]img2=img2[:row,:col,:]imgjia=(img1+img2)/256#加
imgjian=(img1-img2)/255#减
imgcheng=(img1*img2)/255#乘
imgchu=(img1/img2)/255#除
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.subplot(231),plt.imshow(img1),plt.title("第一张图")
plt.subplot(232),plt.imshow(img2),plt.title("第二张图")
plt.subplot(233),plt.imshow(imgjia),plt.title("加")
plt.subplot(234),plt.imshow(imgjian),plt.title("减")
plt.subplot(235),plt.imshow(imgcheng),plt.title("乘")
plt.subplot(236),plt.imshow(imgchu),plt.title("除")
plt.show()

结果:

3【 图像的几何变换】

对一幅图像进行缩放、旋转、平移、裁剪、镜像变换,在同一个窗口内分成六个子窗口来分别显示原图和变换后的图像,注上文字标题

注意:这里的图像是灰度图,只有一层通道,相当与是对二维的矩阵进行操作。对彩色图像处理时,需要考虑三层通道。

from skimage import io,color
from matplotlib import pyplot as plt
import numpy as np
from skimage import io,color
from matplotlib import pyplot as plt
import numpy as np
from skimage import transform
img=io.imread(r'./01 (1).jpg')
img=color.rgb2gray(img)
img1=transform.rescale(img,2)#缩小为原来0.5倍数
img2=transform.rotate(img,60)#旋转60度
def Move(pic,delta_x,delta_y):      #平移#delta_x>0下移,delta_x<0上移#delta_y>0右移,delta_y<0左移newpic=np.zeros((pic.shape[0],pic.shape[1]))for i in range(pic.shape[0]):for j in range(pic.shape[1]):if i+delta_x>=pic.shape[0] or j+delta_y>=pic.shape[1]:passelse:newpic[i+delta_x][j+delta_y]=pic[i][j]return newpic
def Cut(pic,x_start,x_end,y_start,y_end):#裁剪 x纵坐标newpic=np.zeros((pic.shape[0],pic.shape[1]))for i in range(x_start,x_end):for j in range(y_start,y_end):newpic[i][j]=pic[i][j]return newpic
def Horizontal(pic):                #垂直镜像newpic=np.zeros((pic.shape[0],pic.shape[1]))mid=(pic.shape[0]-1)/2for i in range(pic.shape[0]):x=int(2*mid-i)for j in range(pic.shape[1]):newpic[x][j]=pic[i][j]return newpic
img3=Move(img,100,0)
img4=Cut(img,100,500,300,600)
img5=Horizontal(img)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.subplot(231),plt.imshow(img,plt.cm.gray),plt.title('原图')
plt.subplot(232),plt.imshow(img1,plt.cm.gray),plt.title('缩放')
plt.subplot(233),plt.imshow(img2,plt.cm.gray),plt.title('旋转')
plt.subplot(234),plt.imshow(img3,plt.cm.gray),plt.title('平移')
plt.subplot(235),plt.imshow(img4,plt.cm.gray),plt.title('裁剪')
plt.subplot(236),plt.imshow(img5,plt.cm.gray),plt.title('镜像变换')

结果:

4【图像的灰度变换】

对一幅图像进行灰度变化(自行设计线性变换或者非线性变换),实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。

from skimage import io,color
from matplotlib import pyplot as plt
import numpy as np
#中文显示
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef linear(a,x,b):return a*x+b
# def notLinear(a,x,b):#使用一元二次函数
#     return a*x*x+b
def negative(x):return 255-x
img=io.imread(r'./01 (1).jpg')
img=color.rgb2gray(img)
img1=np.zeros((img.shape[0],img.shape[1]))
img2=np.zeros((img.shape[0],img.shape[1]))
img3=np.zeros((img.shape[0],img.shape[1]))
for i in range(img.shape[0]):for j in range(img.shape[1]):#亮a=2b=100img1[i][j]=linear(a,img[i][j],b) if linear(a,img[i][j],b)<255 else 255#亮a=1b=-0.5img2[i][j]=linear(a,img[i][j],b) if linear(a,img[i][j],b)>0 else 0#负片img3[i][j]=negative(img[i][j])/255plt.subplot(141),plt.imshow(img,plt.cm.gray),plt.title('原图')
plt.subplot(142),plt.imshow(img1,plt.cm.gray),plt.title('亮')
plt.subplot(143),plt.imshow(img2,plt.cm.gray),plt.title('亮')
plt.subplot(144),plt.imshow(img3,plt.cm.gray),plt.title('负片')

结果:

01 (1).jpg

01 (2).jpg

还有其他实验将在后面陆续整理出来,一起学习一起进步吧。有问题请私信我

觉得有用的可以ctrl+D收藏哦

数字图像处理实验--实验项目一 图像的基本操作和基本运算相关推荐

  1. 《数字图像处理》实验之对图像进行双线性(bilinear)插值缩放

    最近数字图像处理的实验课,老师让我们实现对图像进行双线性(bilinear)插值缩放,以下是原理和代码. 一.双线性插值缩放 1.图像几何变换的一般流程: ①确定变换后新图像的大小 ②对新图像的每一个 ...

  2. 数字图像处理:实验一 MATLAB 图像处理基础

    实验一 MATLAB 图像处理基础 MATLAB 具有强大的图像处理工具箱,有助于人们更好的理解各种图像处理算法,通 过调用工具箱中的函数,可以减少编程的复杂性,简化编程.本次实验主要掌握 MATLA ...

  3. 数字图像处理笔记(一)——图像存储空间,分辨率,图像内插

    数字图像处理笔记(一)--图像存储空间,分辨率,图像内插 本系列笔记是笔者在学习冈萨雷斯<数字图像处理>第三版时做的总结,日后看的时候方便点,如果有幸得到大家的讨论,喜上眉梢. 本节参考书 ...

  4. 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面(数字图像处理课程实验)

    文章目录 一.环境准备 二.数据集准备 三.项目结构 四.完整参考代码 imgCode/testUI3.py imgCode/test2.py 五.运行结果 测试一: 测试二 六.参考链接 一.环境准 ...

  5. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  6. 遥感数字图像处理(实验一)——预处理、图像的真彩色和拉伸显示(包括图像的直方图显示、线性拉伸、与直方图匹配)

    目录 实验目的: 实验内容一: 实验步骤: 一.影像的获取 二.影像的合成 三.对合成的影像进行不规则分幅裁剪 四.对裁剪的影像进行拉伸 五.直方图匹配 六.实验总结及扩展 实验目的: 理解遥感数字图 ...

  7. 【遥感数字图像处理】实验:遥感图像显示与数据输入/输出(Erdas版)

    一.实验平台:Erdas 9.1 二.实验内容:视窗功能简介.图形和图像显示操作.实用菜单操作.显示操作.AOI菜单操作.矢量和栅格菜单.数据的输入输出等. 三.实验目的:初步了解Erdas的主要功能 ...

  8. matlab数字图像处理课程设计报告,数字图像处理初步-实验1

    MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...

  9. 数字图像处理:实验三 图像增强

    实验三 图像增强 图像增强是数字图像处理过程中常采用的一种方法.为了改善视觉效果或便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的改善方法或加强特征的措施称为图像增强.图像增强处理是改 ...

最新文章

  1. 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)
  2. 有关Gradle Network is unreachable: connect的报错
  3. IDEA下找不到diagrams按钮选项的解决方案
  4. AzureDirectory Library for Lucene.Net
  5. 快手高级Java四轮面试题:设计模式+红黑树+Java锁+Redis等
  6. 华为就5G网络设备禁令起诉瑞典邮政和电信管理局
  7. 阅读类app界面设计UI可临摹素材模板
  8. Tricks(三十一)—— 访问一个数组相邻的奇数位偶数位
  9. python机器学习案例系列教程——BIRCH聚类
  10. 详细又简单的Unity的下载安装教程
  11. JSP 分页显示技术
  12. EXCEL与数据透视表整理
  13. ubuntu18.04通过deb文件安装软件
  14. 可用于近红外光谱数据分析的网上公开数据集
  15. c语言-基本计算 pm2.5,pm2.5标准
  16. 今日头条视频采集方法
  17. java 规范 阿里巴巴_阿里巴巴编码规范java
  18. 如何用计算机控制家带你开关,计算机控制系统复习点及答案
  19. VUE 查找数组中符合条件的对象
  20. 谨以此篇文章开启我的博客生涯

热门文章

  1. 神经网络预测模型优缺点,神经网络预测模型实例
  2. linux限制root用户访问权限,Linux中限制用户访问权限的3种方法
  3. Photoshop脚本 图层的链接
  4. 用JAVA实现字符串大小写转换
  5. python批量识别图片并根据内容重命名
  6. 用Tkinter打造GUI开发工具(7)字体类型
  7. 计算机知识音频转换,教你如何从原版音频中轻松提取音乐
  8. 云虚拟主机开源 DedeCMS 安装指南
  9. 大一期中c语言答案,C语言期中考试题目及答案
  10. TDP“星星之火”计划——第三期招新启动