模式识别与图像处理课程实验一:图像处理实验-->> 颜色算子实验、Susan、Harris角点检测实验、 sobel边缘算子检测实验

  • 一、 实验内容
  • 二、 颜色算子实验
    • 2.1、 提取红色
    • 2.2、 提取绿色
    • 2.3、 提取蓝色
  • 三、 Susan、Harris角点检测实验
  • 3. 1、 实验程序
    • 3.1.1、Susan角点检测
    • 3.1.2、Harris角点检测
  • 四、 sobel边缘算子检测实验
    • 4.1、sobel边缘算子检
  • 五、 实验总结

一、 实验内容

要求编写一个包含颜色算子,Susan,Harris,角点,sobel边缘算子的程。

二、 颜色算子实验

2.1、 提取红色

  • 实验的程序如下
import numpy as np
import cv2 as cvimage = cv.imread("1.jpg")
image = image / np.ones([1, 1, 3]).astype(np.float32)
image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print(image.shape)# 颜色算子
# red
redAdd = np.ones([1, 1, 3]).astype(np.float32)
redAdd[0, 0, 0] = 1.0
redAdd[0, 0, 1] = 0.5
redAdd[0, 0, 2] = 0.25redSub = np.ones([1, 1, 3]).astype(np.float32)
redSub[0, 0, 0] = 0.25
redSub[0, 0, 1] = 0.5
redSub[0, 0, 2] = 1.0image1 = np.mean(image * redAdd, 2)
image2 = np.mean(image * redSub, 2) + 100
imageRed = image1 / image2redMax = np.max(imageRed)
redMin = np.min(imageRed)imageRed = 255 * (imageRed - redMin) / (redMax - redMin)
cv.imwrite("1red.png", imageRed)

运行结果如下

  1. 实验原图
  2. 实验结果图

2.2、 提取绿色

实验的程序如下

import numpy as np
import cv2 as cvimage = cv.imread("1.jpg")
image = image / np.ones([1, 1, 3]).astype(np.float32)
image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print(image.shape)# green
greenAdd = np.ones([1, 1, 3]).astype(np.float32)
greenAdd[0, 0, 0] = 0.5
greenAdd[0, 0, 1] = 1.0
greenAdd[0, 0, 2] = 0.25greenSub = np.ones([1, 1, 3]).astype(np.float32)
greenSub[0, 0, 0] = 0.5
greenSub[0, 0, 1] = 0.25
greenSub[0, 0, 2] = 1.0image1 = np.mean(image * greenAdd, 2)
image2 = np.mean(image * greenSub, 2) + 100imageGreen = image1 / image2
greenMax = np.max(imageGreen)
greenMin = np.min(imageGreen)imageRed = 255 * (imageGreen - greenMin) / (greenMax - greenMin)
cv.imwrite("1green.png", imageRed)

运行结果如下

  1. 实验原图

  2. 实验结果图

2.3、 提取蓝色

  • 实验的程序如下
import numpy as np
import cv2 as cvimage = cv.imread("1.jpg")
image = image / np.ones([1, 1, 3]).astype(np.float32)
image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print(image.shape)# bule
buleAdd = np.ones([1, 1, 3]).astype(np.float32)
buleAdd[0, 0, 0] = 0.25
buleAdd[0, 0, 1] = 0.5
buleAdd[0, 0, 2] = 1.0buleSub = np.ones([1, 1, 3]).astype(np.float32)
buleSub[0, 0, 0] = 1.0
buleSub[0, 0, 1] = 0.5
buleSub[0, 0, 2] = 0.25image1 = np.mean(image * buleAdd, 2)
image2 = np.mean(image * buleSub, 2) + 100imageBlue = image1 / image2
blueMax = np.max(imageBlue)
blueMin = np.min(imageBlue)imageBlue = 255 * (imageBlue - blueMin) / (blueMax - blueMin)cv.imwrite("1blue.png", imageBlue)

运行结果如下

  1. 实验原图

  2. 实验结果图

三、 Susan、Harris角点检测实验

3. 1、 实验程序

3.1.1、Susan角点检测

Susan角点检测程序如下

import numpy as np
import cv2 as cvimage = cv.imread("2.jpg")
image = np.mean(image, 2)height = image.shape[0]
width = image.shape[1]
print(image.shape)#susan 算子
radius = 5
imageSusan = np.zeros([height, width]).astype(np.float32)for h in range(radius, height-radius):for w in range(radius, width-radius):numSmall = 0numLarge = 0numAll = 0for y in range(-radius, radius + 1):for x in range(-radius, radius+1):distance = np.sqrt(y**2 + x**2)if distance <= radius:numAll += 1if image[h + y, w + x] < image[h, w] - 27:numSmall += 1if image[h + y, w + x] > image[h, w] + 27:numLarge += 1ratio = 1.0 * numSmall / numAllratio2 = 1.0 * numLarge / numAllif ratio < 0.3:imageSusan[h, w] = 0.3 - ratioif ratio2 > 0.7:imageSusan[h, w] = ratio2 - 0.7imageMax = np.max(imageSusan)
imageMin = np.min(imageSusan)imageSusan = 255*(imageSusan - imageMin)/(imageMax - imageMin)
print(imageSusan.shape)cv.imwrite("2.png", imageSusan)
  • 运行结果如下
  1. 实验原图

  2. 实验结果图

3.1.2、Harris角点检测

  • Harris角点检测程序如下
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt# 读取图像
img = cv.imread('3.jpg')
lenna_img = cv.cvtColor(img, cv.COLOR_BGR2RGB)# 图像转换成灰度图像
grayImage = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
grayImage = np.float32(grayImage)# Harris算子
harrisImage = cv.cornerHarris(grayImage, 2, 3, 0.04)harrisImage = cv.dilate(harrisImage, None)# 设置阈值
thresImage = 0.006 * harrisImage.max()img[harrisImage > thresImage] = [255, 0, 0]# 显示正常中文的标签
plt.rcParams['font.sans-serif'] = ['SimHei']titles = [u'(a)原始图像', u'(b)Harris图像']
images = [lenna_img, img]for i in range(2):plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')plt.title(titles[i])plt.xticks([]), plt.yticks([])
plt.show()

运行结果如下

四、 sobel边缘算子检测实验

4.1、sobel边缘算子检

  • sobel边缘算子检程序如下
import numpy as np
import cv2image = cv2.imread("3.jpg")
height = image.shape[0]
width = image.shape[1]sobelResult = np.zeros([height - 2, width - 2, 1]).astype(np.float32)
sobelX = np.zeros([3, 3, 1]).astype(np.float32)
sobelY = np.zeros([3, 3, 1]).astype(np.float32)sobelX[0, 0, 0] = -1
sobelX[1, 0, 0] = -2
sobelX[2, 0, 0] = -1
sobelX[0, 2, 0] = 1
sobelX[1, 2, 0] = 2
sobelX[2, 2, 0] = 1sobelY[0, 0, 0] = -1
sobelY[0, 1, 0] = -2
sobelY[0, 2, 0] = -1
sobelY[2, 0, 0] = 1
sobelY[2, 1, 0] = 2
sobelY[2, 2, 0] = 1for h in range(0, height - 3):for w in range(0, width - 3):#求方向梯度imageIncre = image[h:h + 3, w:w + 3]gradientX = np.sum(imageIncre * sobelX)gradientY = np.sum(imageIncre * sobelY)gradient = np.sqrt(gradientX**2 + gradientY**2)sobelResult[h, w, 0] = gradientimageMax = np.max(sobelResult)
imageMin = np.min(sobelResult)sobelResult = 255*(sobelResult - imageMin) / (imageMax - imageMin)
cv2.imwrite("3.png", sobelResult)

2、 运行结果如下

  1. 实验原图

  2. 实验结果图

五、 实验总结

  • 1、 掌握了编写含颜色算子图像处理、Susan与Harris角点图像检测、sobel边缘算子图像检测的程序编写方法。
  • 2、 通过实验、对于边缘检测算子与角点检测算子有了进一步的掌握。

模式识别与图像处理课程实验一:图像处理实验(颜色算子实验、Susan、Harris角点检测实验、 sobel边缘算子检测实验)相关推荐

  1. 基于matlab的脑瘤mr图像处理_基于Matlab GUI的医学图像处理课程虚拟实验平台设计...

    论文写作指导:请加QQ229366758 摘 要:针对医学生工程技术缺乏的状况,分析医学生学习医学图像处理存在的困难,提出利用Matlab图像处理工具和简单的GUI界面,设计和构建包含医学图像处理教学 ...

  2. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc

    数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...

  3. 数字图像处理课程(作业+实验+大作业)相关文章 传送门

    数字图像处理课程(作业+实验+大作业)相关文章 传送门 博文说明 本文所使用代码或多或少参考了以往博文的同类or相似文章的代码,并非纯原创 本文仅用于记录并提供一种代码思路,供大家参考 文章目录 数字 ...

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

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

  5. 人工智能与模式识别的意义(模式识别与图像处理课程作业)

    人工智能与模式识别的意义(模式识别与图像处理课程作业 一. 人工智能的意义 二. 模式识别的意义 2.1.文字识别 2.2.语音识别 2.3.指纹识别 2.4.遥感 2.5.医学诊断 1.语音识别技术 ...

  6. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  7. 【数字图像处理】实验一 图像处理基本操作

    实验一 图像处理基本操作 1 实验目的 2 实验环境 3 实验内容 4 实验心得 1 实验目的 熟悉并掌握MATLAB工具的使用: 实现图像的读取.显示.代数运算和简单变换. 2 实验环境 matla ...

  8. (附源码)python数字图像处理课程平台 毕业设计 242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  9. (附源码)Python数字图像处理课程平台 毕业设计242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)
  2. 进制转换(完成Python14作业的背景补充)
  3. JBPM深入解析之变量设计
  4. python代码示例下载-python爬取音频下载的示例代码
  5. 简单好用的PHP无限分类
  6. IDEA中查看SVN项目历史版本更新信息
  7. 限制网速 制造测试条件
  8. 最近和朋友微信卖螃蟹有点偏离重心了
  9. SparseArray代替HashMap
  10. 使用IPMI工具实现对服务器的远程管理
  11. bzoj1854: [Scoi2010]游戏 贪心
  12. python实验报告_20183122 实验一《Python程序设计》实验报告
  13. c++ string replace_「Java学习」String,StringBuffer和StringBuilder的区别
  14. VC与matlab混合编程
  15. APS计划排程和生产排产系统,包含哪些排程算法?
  16. selenium自动化测试随笔,安装selenium
  17. 运营数据分析步骤与方法解读
  18. Django系列(1)-自动化生成API文档
  19. 摄影基础之【**相机画幅、人眼视角范围**】
  20. strlen获取char*的大小问题

热门文章

  1. 数据分析 波士顿房价预测
  2. 中国能源网络安全大会举办,腾讯安全曹文炎分享助力能源企业安全建设的实践经验
  3. DELL 笔记本首次安装VS2010 快捷键全部无效
  4. 数据结构实验--基于线性表的图书信息管理系统
  5. 干货 | 提升50分,Trip.com 机票基于 PageSpeed 的前端性能优化实践
  6. 导数求函数最大值和最小值
  7. [随笔]关于如何实现鼠标穿透窗口和窗口半透明
  8. leecode做题笔记17————电话号码的字母组合
  9. web 报表轻松实现数据异常预警功能
  10. 巧妙用思维导图做营销策划|营销人员收藏