您现在的位置是:首页 > 正文

【CV作业03】图像平滑+锐化处理

2024-04-01 00:11:43阅读 2

gaussianFilter

def gaussianFilter(src, k_size, sigma):
    """
    高斯滤波器
    :param src: 原始图像
    :param k_size: 滤波器的核大小
    :param sigma: 标准偏差,方便起见两个方向上相同
    :return: 目标图像
    """

    h, w= src.shape

    # padding,防止图像变小变模糊
    pad = k_size // 2  # 整除
    dst = np.zeros((h + 2 * pad, w + 2 * pad))
    dst[pad:pad + h, pad:pad + w] = src.copy()

    # 卷积核
    g = np.zeros((k_size, k_size))
    for x in range(k_size):  # [0,2]
        for y in range(k_size):
            g[x, y] = np.exp(-((x - pad) ** 2 + (y - pad) ** 2) / (2 * (sigma ** 2)))
    g /= (sigma * np.sqrt(2 * np.pi))
    g /= g.sum()  # 归一化

    # 卷积
    tmp = dst.copy()
    for i in range(h):
        for j in range(w):
                dst[pad + i, pad + j] = np.sum(g * tmp[i:i + k_size, j:j + k_size])

    dst = dst[pad:h + pad, pad:w + pad].astype(np.uint8)

    return dst

laplacian

def laplacian(src):
    h, w = src.shape
    dst = np.zeros((h, w))
    # operator = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
    operator = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
    for i in range(1, h - 1):
        for j in range(1, w - 1):
            dst[i, j] = abs(np.sum(src[i - 1:i + 2, j - 1:j + 2] * operator))
    return np.uint8(dst)

实现效果

 

 

 

 

网站文章

  • 使用Apache服务器部署python web过程中遇到的问题及解决方法

    使用Apache服务器部署python web过程中遇到的问题及解决方法

    1. 浏览器提示Internal Server Error 分析:查看Apache错误日志。日志提示:IndentationError: expected an indented block\r,即程...

    2024-04-01 00:11:36
  • 基于 Redis 实现分布式应用限流

    基于 Redis 实现分布式应用限流

    原文链接:http://xiaoqiangge.com/aritcle/1513004492550.html 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。 前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案,参考《redis in action》 实现了一个jedis版本的,都属于业务层次限制。 实际场景中

    2024-04-01 00:11:11
  • Spring Boot系列八 spring boot集成jsp、restful接口、springmvc基本功能

    本文介绍spring boot里的spring mvc部分的用法,主要包括如下:- 1 实现 spring boot 集成jsp: @Controller+ @RequestMapping- 2 模拟登录功能: ModelAndView- 3 spring boot 实现restful接口:@RestController

    2024-04-01 00:11:04
  • databinding的简单使用步骤

    1.开启databindingandroid { //在 app 的 build.grandle 中添加开启配置 dataBinding { enabled = true }}2、创建实体public class User { public String name; public User(String name) { this...

    2024-04-01 00:10:57
  • ESP32 Arduino (十) HTTPClient库

    ESP32 Arduino (十) HTTPClient库

    很多时候我们需要ESP32去访问外网的服务器获取一些网络资源,HTTP服务器是最常见的服务器,在这个时候就需要ESP32作为HTTPClient使用,HttpClient是Apache中的一个开源的项...

    2024-04-01 00:10:33
  • 打印机文件服务器主机,打印机服务器主机名称是什么原因

    打印机文件服务器主机,打印机服务器主机名称是什么原因

    打印机服务器主机名称是什么原因 内容精选换一换成为进阶Linux大佬的第一步一、操作系统1、操作系统为接口的示意图2、不同领域的主流操作系统桌面操作系统服务器操作系统嵌入式操作系统移动设备操作系统 3...

    2024-04-01 00:10:20
  • Vue组件化学习之scoped

    Vue组件化学习之scoped

    简介主要介绍scoped的作用。先弄一个案例:main.js://引入vue依赖import Vue from 'vue'//引入组件Appimport App from './App.vue'// ...

    2024-04-01 00:10:14
  • JS判断是否为base64字符串&如何转换为图片src格式

    JS判断是否为base64字符串&如何转换为图片src格式

    JS判断是否为base64字符串&如何转换为图片src格式需求背景 :如何判断后端给返回的 字符串 是否为 base-64 位 呢 ?以及如果判断为是的话,如何给它进行转换为 img 标签可使用的那种 src 格式 呢 ?

    2024-04-01 00:09:44
  • 给我一个java 策略模式和工厂模式一起实用的例子

    策略模式可以用来实现一组可互换的算法,例如在不同环境下使用不同的算法。工厂模式可以用来创建一组相关的对象,例如在一个网站中创建不同类型的用户。一个实用的例子就是使用策略模式和工厂模式来创建一个网站,该网站根据不同的环境使用不同的算法来创建不同类型的用户。 ...

    2024-04-01 00:09:39
  • rmit计算机科学选课,RMIT最强最全的IT Master选课指南,“鼠”于你的高分秘籍!...

    rmit计算机科学选课,RMIT最强最全的IT Master选课指南,“鼠”于你的高分秘籍!...

    RMIT的IT课程设计十分地人性化,每个学期的课程根据自身知识的储备的不同会有多个方向的选择。但是,如果对自己的了解不够深入,或者对课程的英语描述不清楚的同学很容易踩雷。所以RMIT的学霸学长根据自己...

    2024-04-01 00:09:31