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

这篇具有很好参考价值的文章主要介绍了模式识别与图像处理课程实验一:图像处理实验(颜色算子实验、Susan、Harris角点检测实验、 sobel边缘算子检测实验)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

一、 实验内容

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

二、 颜色算子实验

2.1、 提取红色

  • 实验的程序如下
import numpy as np
import cv2 as cv

image = 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.25

redSub = 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.0

image1 = np.mean(image * redAdd, 2)
image2 = np.mean(image * redSub, 2) + 100
imageRed = image1 / image2

redMax = np.max(imageRed)
redMin = np.min(imageRed)

imageRed = 255 * (imageRed - redMin) / (redMax - redMin)
cv.imwrite("1red.png", imageRed)

运行结果如下

  1. 实验原图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris
  2. 实验结果图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

2.2、 提取绿色

实验的程序如下

import numpy as np
import cv2 as cv

image = 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.25

greenSub = 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.0

image1 = np.mean(image * greenAdd, 2)
image2 = np.mean(image * greenSub, 2) + 100

imageGreen = image1 / image2
greenMax = np.max(imageGreen)
greenMin = np.min(imageGreen)

imageRed = 255 * (imageGreen - greenMin) / (greenMax - greenMin)
cv.imwrite("1green.png", imageRed)

运行结果如下

  1. 实验原图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

  2. 实验结果图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

2.3、 提取蓝色

  • 实验的程序如下
import numpy as np
import cv2 as cv

image = 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.0

buleSub = 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.25

image1 = np.mean(image * buleAdd, 2)
image2 = np.mean(image * buleSub, 2) + 100

imageBlue = image1 / image2
blueMax = np.max(imageBlue)
blueMin = np.min(imageBlue)

imageBlue = 255 * (imageBlue - blueMin) / (blueMax - blueMin)

cv.imwrite("1blue.png", imageBlue)

运行结果如下

  1. 实验原图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

  2. 实验结果图

模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

三、 Susan、Harris角点检测实验

3. 1、 实验程序

3.1.1、Susan角点检测

Susan角点检测程序如下

import numpy as np
import cv2 as cv

image = 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 = 0
        numLarge = 0
        numAll = 0

        for y in range(-radius, radius + 1):
            for x in range(-radius, radius+1):
                distance = np.sqrt(y**2 + x**2)

                if distance <= radius:
                    numAll += 1

                    if image[h + y, w + x] < image[h, w] - 27:
                        numSmall += 1
                    if image[h + y, w + x] > image[h, w] + 27:
                        numLarge += 1

        ratio = 1.0 * numSmall / numAll
        ratio2 = 1.0 * numLarge / numAll

        if ratio < 0.3:
            imageSusan[h, w] = 0.3 - ratio
        if ratio2 > 0.7:
            imageSusan[h, w] = ratio2 - 0.7

imageMax = np.max(imageSusan)
imageMin = np.min(imageSusan)

imageSusan = 255*(imageSusan - imageMin)/(imageMax - imageMin)
print(imageSusan.shape)

cv.imwrite("2.png", imageSusan)
  • 运行结果如下
  1. 实验原图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

  2. 实验结果图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

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()

运行结果如下
模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

四、 sobel边缘算子检测实验

4.1、sobel边缘算子检

  • sobel边缘算子检程序如下
import numpy as np
import cv2

image = 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] = 1

sobelY[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] = 1


for 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] = gradient


imageMax = np.max(sobelResult)
imageMin = np.min(sobelResult)

sobelResult = 255*(sobelResult - imageMin) / (imageMax - imageMin)
cv2.imwrite("3.png", sobelResult)

2、 运行结果如下

  1. 实验原图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

  2. 实验结果图
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris文章来源地址https://www.toymoban.com/news/detail-786616.html

五、 实验总结

  • 1、 掌握了编写含颜色算子图像处理、Susan与Harris角点图像检测、sobel边缘算子图像检测的程序编写方法。
  • 2、 通过实验、对于边缘检测算子与角点检测算子有了进一步的掌握。
    模式识别与图像处理基础实验,# OpenCV,大学期间课程实验,# 模式识别与图像处理课程实验,图像处理,人工智能,OpenCV,Susan,Harris

到了这里,关于模式识别与图像处理课程实验一:图像处理实验(颜色算子实验、Susan、Harris角点检测实验、 sobel边缘算子检测实验)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 自适应计算机视觉:从图像处理到模式识别

    计算机视觉(Computer Vision)是人工智能领域的一个重要分支,其主要研究让计算机能够理解和解释人类世界中的视觉信息。自适应计算机视觉(Adaptive Computer Vision)是计算机视觉的一个子领域,它关注于如何让计算机能够根据不同的环境和任务自动调整和优化其视觉处理能力。在这

    2024年02月22日
    浏览(8)
  • 【数字图像处理】基于Simulink的PCB孔位检测识别实验报告和代码

    需要一种图像处理系统来检测印刷电路板(PCB)中的小孔,并将它们的位置与预定义的规格进行比较。本实验的主要目的是处理图像,以便可以显示检测到的孔位置的覆盖(例如使用红色标记)以及预定义位置的覆盖(例如使用绿色标记)。图1中显示了一个样本图像(部分)。如果有任

    2024年02月07日
    浏览(15)
  • python 图像处理——图像分割及经典案例篇之基于颜色的图像分割

    python 图像处理——图像分割及经典案例篇之基于颜色的图像分割

    前言 作者在第一部分向大家介绍了图像处理的基础知识,第二部分介绍了图像运算和图像增强,接下来第三部分我们将详细讲解图像分割及图像处理经典案例,该部分属于高阶图像处理知识,能进一步加深我们的理解和实践能力。图像分割是将图像分成若干具有独特性质的区

    2024年02月11日
    浏览(12)
  • iTOP-3568开发板使用OpenCV处理图像-颜色转换

    iTOP-3568开发板使用OpenCV处理图像-颜色转换

    本小节代码在配套资料“iTOP-3568 开发板\\03_【iTOP-RK3568 开发板】指南教程 \\04_OpenCV 开发配套资料\\05”目录下,如下图所示: cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型: cv2.cvtColor(src,code,dst=None,dstCn=None) 参数定义: src:要转换的源文件

    2024年02月12日
    浏览(10)
  • Python-OpenCV中的图像处理-颜色空间转换

    Python-OpenCV中的图像处理-颜色空间转换

    在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0,

    2024年02月13日
    浏览(13)
  • 课程大纲:图像处理中的矩阵计算

    课程大纲:图像处理中的矩阵计算

    课程名称:《图像处理中的矩阵计算》 课程简介: 图像处理中的矩阵计算是图像分析与处理的核心部分。本课程旨在教授学员如何应用线性代数中的矩阵计算,以实现各种图像处理技术。我们将通过强调实际应用和实践活动来确保学员能够理解和掌握这些概念。 第1章:矩阵

    2024年02月20日
    浏览(7)
  • 数字图像处理实验——数字图像处理初步

    数字图像处理实验——数字图像处理初步

    一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式的图像; 2.熟练掌握在MATLAB中如何读取图像及图像的属性信息(大小、颜色、亮度(灰度)、宽度、高度等); 3.掌握如何在MATLAB中按照指定要求存储一副图像的方法; 4.了解图像的算术运算在数字图像中的初步应

    2024年02月04日
    浏览(39)
  • 计算机视觉--利用HSV和YIQ颜色空间处理图像噪声

    计算机视觉--利用HSV和YIQ颜色空间处理图像噪声

    前言: Hello大家好,我是Dream。 今天我们将 利用HSV和YIQ颜色空间处理图像噪声 。在本次实验中,我们使用任意一张图片,通过 RGB转HSV和YIQ 的操作,加入了 椒盐噪声 并将其转 换回RGB 格式,最终实现对 图像的噪声处理 。一起来看看吧~ 首先,我们导入需要的库。包括numpy用

    2024年02月15日
    浏览(13)
  • 【国科大课程】AI院 数字图像处理-杨戈、彭思龙

    【国科大课程】AI院 数字图像处理-杨戈、彭思龙

    2022年秋季《数字图像处理》课程复习整理 PBM(bitmap) PGM(graymap)PPM(pixelmap) TIFF(无损图像格式)、bmp、jepg、gif、png等 像素位深度: 如果8位三通道彩色图像,则变换范围就是 2 8 ∗ 2 8 ∗ 2 8 − 1 2^8*2^8*2^8-1 2 8 ∗ 2 8 ∗ 2 8 − 1 简单成像模型: 采样:空间坐标离散化 量化

    2024年02月04日
    浏览(6)
  • 数字信号与图像处理实验三:图像处理基础与图像变换

    数字信号与图像处理实验三:图像处理基础与图像变换

    ​ 通过本实验加深对数字图像的理解,熟悉MATLAB中的有关函数;应用DCT对图像进行变换;熟悉图像常见的统计指标,实现图像几何变换的基本方法。 ​ 选择两幅图像,读入图像并显示,同时使用Matlab计算图像的大小,灰度平均值、协方差矩阵、灰度标准差和相关系数。 DC

    2024年02月04日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包