Image Processing in the Spatial Domain 空间域图像处理

2023-05-16

背景

二维卷积
在二维卷积中,我们通过卷积核对输入图像进行卷积来计算输出图像。卷积核是一个小尺寸的矩阵,例如3×3、5×5或5×7像素;这个矩阵中的项称为卷积系数。
在二维相关中,我们通过将输入图像与相关掩码相关联来计算输出图像。相关掩码是一个小矩阵,其条目称为相关系数。
如下例所示,二维卷积和二维相关非常密切。具有卷积核h的图像的二维卷积与具有相关掩模m的图像的二维相关是相同的,

m通过将h旋转180°来获得,考虑输入图像f和卷积核h,如下所示:

我们将计算由f和h的二维卷积产生的输出图像g。在本实验室中,假设输出图像被裁剪成与输入图像相同的大小。

要计算目标像素位置的卷积输出,例如行y=2,列x=3,请执行以下步骤。
第一步:将卷积核h旋转180度,得到m。


这里,m是对应于给定卷积核的相关掩码。
第二步:在输入图像上滑动m,使其中心与目标位置重合(y行=2,列x=3)。


第三步:将m和它下面的输入像素相乘,用同样的方法求和所有的乘积

我们可以计算出整个输出图像

如果我们对f和相关掩码m进行二维相关,则得到相同的输出图像。对于相关,只需要步骤2和步骤3

MATLAB中的二维卷积

a)MATLAB函数imfilter可用于执行二维卷积和二维相关。
要计算图像f和卷积核h的二维卷积,请使用g=imfilter(f,h,'conv')

计算图像f和相关掩码m的二维相关性,使用  g=imfilter(f,m,'corr')

注意第三个参数中的差异。
在MATLAB中,利用rot90函数,从卷积核中得到相关掩模m:m=rot90(h,2); 

b) 对于方程(5.1)中给出的输入矩阵f和卷积核h,为以下任务输入适当的MATLAB命令。
计算f和h之间的二维卷积的输出。
计算相关掩模m。
计算f与m之间二维相关性的输出。
比较二维卷积和二维相关性。

5.4线性图像滤波的应用

在本节中,我们将研究线性图像滤波的几种应用。这些应用包括平滑图像、锐化图像和检测图像中的边缘。


图像平滑

a)平滑滤波器(也称为低通滤波器)用于去除图像中的噪声。平滑滤波器的卷积核通常满足两个条件:(i)所有系数为正;(ii)所有系数之和等于1。
平滑滤波器在去除由随机噪声引起的突变图像时非常有用。但是,它们也会模糊图像,并且模糊在包含边缘的区域中最明显。 

两种常见的平滑滤波器是平均滤波器和高斯低通滤波器。
平均滤波器:卷积核的所有系数都相同:M是卷积核的大小。
高斯低通滤波器:该滤波器基于高斯函数,其定义为,

,其中ux,u为中心,σ为标准差。
为了确保所有系数和为1: 

这些滤波器的卷积核可以用MATLAB函数fspecial生成。例如,

h=fspecial('average',5)%平均滤波器,大小为5×5,

h=fspecial('gaussian',5,0.5)%高斯滤波器,大小为5×5,σ=0.5 

b) 考虑图像Lena gaussian-noise.bmp包含高斯噪声。我们的目标是通过线性滤波去除图像中的噪声。
计算平均滤波器产生的输出图像。对不同尺寸(5×5和7×7)的过滤器进行试验,并对结果进行比较。
计算尺寸为5×5的高斯滤波器产生的输出图像。用不同的标准差值(σ=0.5和σ=1)进行试验。描述参数σ对滤波器输出的影响。

图像锐化

a)在摄影和出版行业中,一种用于锐化图像的标准技术被称为“反锐化掩模”。之所以有这个名字,是因为这种技术找到了使其“取消锐化”的图像组件,然后从原始图像中删除(或“屏蔽”)该组件。
图像的“未锐化”部分通过低通滤波得到,然后从原始图像中减去,得到边缘图像。最后将边缘图像加入到原始图像中,使边缘更加清晰。所有这些步骤都可以通过具有以下卷积核的单个滤波器来完成 

在MATLAB中,可以使用函数fspecial创建一个反锐化掩蔽滤波器:h_unsharp=fspecial('unsharp',0.2)上述命令创建一个带系数0.2的反锐化滤波器。

应用反锐化掩模滤波器锐化图像Lena-blur.bmp. 对的一系列值进行试验,以找到最合适的值。

边缘检测

a)有几种线性滤波器可用于检测图像中的边缘(见ECTE903-tearch-02.pdf)。在这个实验中,我们将实验两种滤波器:Prewitt算子和Sobel算子。“Operator”只是卷积内核或过滤器的另一个名称。
Prewitt算子:有八种不同的Prewitt算子;每个算子都被设计成检测具有特定方向的边缘。例如,运算符P1检测水平边缘;运算符P8检测垂直边缘;运算符P2检测对角线边缘:

Sobel算子:有八种不同的Sobel算子;每个算子都被设计成沿着特定方向检测边缘。例如,运算符S1检测水平边缘;运算符S8检测垂直边缘;而运算符S2检测对角线边缘:

b) 执行MATLAB命令open(sldemo_msfcn_edge_detect.slx'以查看边缘检测的演示。单击“开始模拟”按钮。
c) 清单5.1中的MATLAB程序detect_edge.m实现了通过线性滤波找到图像边缘的步骤。此程序在图像上应用两个Prewitt运算符P1和P3shape.bmp.

% Written: Lam Phung, July 2006
f = rgb2gray(imread('shapes.bmp')); % Read input image
figure(1), subplot(2,2,1),imshow(f); title('Input image');
f = double(f);
 
%% Linear image filtering
hx = [1  1  1; 0  0  0; -1 -1 -1] % Prewitt horizontal operator
hy = [1  0 -1; 1  0 -1;  1  0 -1] % Prewitt vertical operator 
edge_x = imfilter(f,hx,'conv');   % Edge strength along x direction
edge_y = imfilter(f,hy,'conv');   % Edge strength along y direction
 
%% Show edge detection based on individual operator
% Consider a pixel as an edge pixel if edge strength exceeds a threshold
edge_threshold = 1;
subplot(2,2,3); imshow(abs(edge_x) > edge_threshold); title('Horizontal operator');
subplot(2,2,4); imshow(abs(edge_y) > edge_threshold); title('Vertical operator');
 
%% Combining both horizontal and vertical filter outputs
edge_magnitude = sqrt(edge_x .^ 2 + edge_y .^ 2); % Combined edge strength
edge_threshold = 1;
edge_map = (edge_magnitude >= edge_threshold);    
subplot(2,2,2), imshow(edge_map), title('Edges based on both operators');
 
%% Show edge directions
[H, W] = size(f); [x,y] = meshgrid(1:W,1:H);
figure(2), quiver(x, y, edge_x, edge_y);
axis image; axis ij;

非线性图像滤波使用顺序统计

a)中值滤波器的非线性滤波器。对于线性滤波器,输出像素是相邻像素的线性组合。相反,对于中值滤波器,输出像素是相邻像素的中值。对于两个过滤器,邻域由过滤器大小决定,例如3×3或5×5像素。
考虑图1中的示例。假设对图像f应用大小为3×3的中值滤波器。第2行和第3列的输出像素为: 

b) MATLAB有一个内置函数medfilt2用于图像中值滤波。它的语法是g=medfilt2(f,[mn]),其中f是输入图像,g是输出图像,过滤器大小是m行×n列。
c) 图为Lena-salt-pepper-noise.bmp在这个实验室里被盐和胡椒的噪音污染了。应用中值滤波器从该图像中去除噪声。比较不同滤波器尺寸产生的输出。
d) 使用适当的高斯低通滤波器去除图像中的噪声-噪声.bmp. 比较高斯滤波器和中值滤波器产生的输出。
e) 清单5.2显示了一个MATLAB程序,该程序使用5×5像素的过滤器大小生成中值滤波图像。此程序使用函数中值来计算列向量的中值。
要使用median_filter.m程序,请尝试f=imread('Lena-salt-pepper-noise.bmp');median_filter(f);

function g = median_filter(f)
[height, width]= size(f); % Size of input image
g = zeros(height, width); % Allocate memory for output image

for y = 1:height
    for x = 1:width
        x1 = x - 2; % left  column of the 5x5 window
        x2 = x + 2; % right column of the 5x5 window
        y1 = y - 2; % top row      of the 5x5 window
        y2 = y + 2; % bottom row   of the 5x5 window
        
        % When the neighbourhood exceeds the image boundary
        x1 = max(x1, 1);
        x2 = min(x2, width);
        y1 = max(y1, 1);
        y2 = min(y2, height);
 
        window = f(y1:y2, x1:x2); % 5 x 5 window
        window = window(:);       % rearrange window into a column vector
        g(y, x) = median(window); % output pixel = median of window 
    end
end
g = uint8(g); imshow(g); % convert to 8-bit image and display

E1。licence-plate.bmp是一个用于车牌自动识别的示例图像。然而,图像质量较低。应用本实验室所学的适当的图像增强技术来增强图像。在答案中包括MATLAB程序和输出图像

E2。实现中心加权中值滤波器中心加权中值(CWM)滤波器在ECTE903-TEARCH-02.pdf中描述。基于清单5.2,编写一个计算CWM过滤图像的MATLAB函数。函数应该有如下语法 function g = cw_median_filter(f, M)

代码见:404 (csdn.net)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Image Processing in the Spatial Domain 空间域图像处理 的相关文章

  • matlab入门学习系列之表达式 变量运算符

    目录 变量 矩阵运算符 数组运算符 函数 表达式示例 变量 与大多数其他编程语言一样 xff0c MATLAB 语言提供数学表达式 xff0c 但与大多数编程语言不同的是 xff0c 这些表达式涉及整个矩阵 MATLAB 不需要任何类型声明
  • MATLAB入门学习系列之输入输出和索引

    取消输出 如果您在仅键入语句后按 Return 或 Enter xff0c MATLAB 会在屏幕上自动显示结果 但是 xff0c 如果使用分号结束行 xff0c MATLAB 会执行计算 xff0c 但不会显示任何输出 当生成大型矩阵时
  • MATLAB入门学习系列之基本绘图函数

    目录 创建绘图 在一幅图形中绘制多个数据集 指定线型和颜色 绘制线条和标记 将绘图添加到现有图形中 图窗窗口 在一幅图窗中显示多个绘图 控制轴 保存图窗 保存工作区数据 创建绘图 plot 函数具有不同的形式 xff0c 具体取决于输入参数
  • MATLAB入门学习系列之图像

    显示图像 图像数据 您可以将二维数值数组显示为图像 在图像中 xff0c 数组元素决定了图像的亮度或颜色 例如 xff0c 加载一个图像数组及其颜色图 xff1a gt gt load durer gt gt whos Name Size
  • 知识跟踪的深度知识跟踪和动态学生分类 Deep Knowledge Tracing and Dynamic Student Classification for Knowledge Tracing

    Deep Knowledge Tracing and Dynamic Student Classification for Knowledge Tracing xff08 译 xff09 知识跟踪的深度知识跟踪和动态学生分类 摘要 在智能辅
  • 知识追踪常见建模方法之IRT项目反应理论

    目录 A 项目反应理论 xff08 IRT item response theory xff09 概述 历史发展 特点 模型 A 项目反应理论 xff08 IRT item response theory xff09 概述 IRT理论即项目
  • MATLAB图像处理基本操作(1)

    matlib软件巨大 xff0c 没有安装 找了几个在线网址 http www compileonline com execute matlab online php https octave online net 从文件读取图像 a xf
  • Python学习系列之类的定义、构造函数 def __init__

    python def init self name等多参数 def init self 常见的两种类的定义方式如下 第一种 class Student def init self 两者之间的区别 self name 61 None self
  • ChatGPT,爆了!

    这段时间真是太刺激了 xff0c AI领域几乎每天都会爆出一个超震撼的产品 xff0c 有一种科幻马上要成现实的感觉 不知道大家朋友圈是什么样 xff0c 在整个创业的圈子里面 xff0c 几乎全是 AI 相关 就连 N 多年 xff0c
  • 分类回归模型评估常见方法及ROC AUC

    目录 模型评估常见方法 ROC和AUC定义 sklearn计算ROC具体实现 计算ROC需要知道的关键概念 1 分析数据 2 针对score xff0c 将数据排序 3 将截断点依次取为score值 3 1 截断点为0 1 sklearn
  • Coursera 吴恩达《Machine Learning》课堂笔记 + 作业

    记录一下最近学习的资源 xff0c 方便寻找 xff1a Github 上已经有人把作业整理成为 Python 的形式了 有 py 和 ipynb 两种格式 https github com nsoojin coursera ml py h
  • tensflow学习小知识tf.train.exponential_decay

    tf train exponential decay是tensflow1 X版本的2 版本使用以下语句 tf compat v1 train exponential decay 将指数衰减应用于学习率 tf compat v1 train
  • PyTorch学习系列之PyTorch:nn和PyTorch:optim优化

    PyTorch xff1a nn 在构建神经网络时 xff0c 我们经常考虑将计算分为几层 xff0c 其中一些层具有可学习的参数 xff0c 这些参数将在学习过程中进行优化 在TensorFlow xff0c 像包 Keras xff0c
  • tf.gather()用法详解

    tf gather params indices validate indices 61 None axis 61 None batch dims 61 0 name 61 None 请注意 xff0c 在CPU上 xff0c 如果找到超出
  • 代码学习之Python冒号详解

    最近看代码发现对冒号用法理解不够透彻 xff0c 记录学习一下 xff1a 1 冒号的用法 1 1 一个冒号 a i j 这里的i指起始位置 xff0c 默认为0 xff1b j是终止位置 xff0c 默认为len a xff0c 在取出数
  • Jupyter Notebook导入和删除虚拟环境 超详细

    记录一下Jupyter Notebook导入和删除虚拟环境的步骤 xff0c 网上博客参差不齐 xff0c 每次找好几个才看到简明容易理解的 方法一步骤 为不同的环境配置kernel 有时候使用conda命令创建了新的python环境 xf
  • tf.expand_dims用法详解

    看官方讲解一些博客感觉一直不是很懂 xff0c 下面是我的个人理解结合官方文档 xff0c 有问题欢迎指出 tf expand dims tf expand dims input axis 61 None name 61 None dim
  • argparse 命令行选项、参数和子命令解析器

    最近看到很多论文代码都是用解析器写的 argparse 命令行选项 参数和子命令解析器 argparse 模块可以让人轻松编写用户友好的命令行接口 程序定义它需要的参数 xff0c 然后 argparse 将弄清如何从 sys argv 解
  • torch.unsqueeze和 torch.squeeze() 详解

    1 torch unsqueeze 详解 torch unsqueeze input dim out 61 None 作用 xff1a 扩展维度 返回一个新的张量 xff0c 对输入的既定位置插入维度 1 注意 xff1a 返回张量与输入张
  • Android中获取唯一的id

    文章目录 Android唯一设备ID现状IMEIMAC地址唯一Id实现方案那些硬件适合硬件标识工具类 Android唯一设备ID现状 设备ID xff0c 简单来说就是一串符号 xff08 或者数字 xff09 xff0c 映射现实中硬件设

随机推荐

  • debian虚拟机下如何安装增强功能

    1 安装gcc和kernel headers gcc有可能默认安装的有 xff08 如果没有还需要安装gcc xff09 xff0c 但是还需要安装build essential sudo apt get install build ess
  • PyTorch学习系统之 scatter() 函数详解 one hot 编码

    torch Tensor scatter scatter 和 scatter 的作用是一样的 xff0c 只不过 scatter 不会直接修改原来的 Tensor xff0c 而 scatter 会 torch Tensor scatter
  • 最新RNN相关模型

    最近在看最新RNN相关模型 找到很多论文 Fundamentals of Recurrent Neural Network RNN and Long Short Term Memory LSTM network 递归神经网络 xff08 R
  • 知识追踪模型的应用

    背景 MOOC 近年来 xff0c 随着在线学习系统在教育环境中越来越普及 xff0c 在线学习人数越来越多 xff0c 教育者不可能追踪每一个学习者的知识状态并提供个性化的学习指导 xff1b 在线学习系统中的知识需要学习者通过各种冗余信
  • 自然语言处理之语料库

    语料库 定义 xff1a 语料库 corpus 就是存放语言材料的仓库 语言数据库 xff09 语料库技术的发展 早期 xff1a 语料库在语言研究中被广泛使用 xff1a 语言习得 方言学 语言教学 句法和语义 音系研究等 沉寂时期 xf
  • 知识追踪入门系列-论文资料汇总

    Paper xff1a 知识追踪相关论文 下载论文和代码见reference第一个链接 Deep Knowledge Tracing 首次提出将RNN用于知识追踪 xff0c 并能够基于复杂的知识联系进行建模 xff08 如构建知识图谱 x
  • 知识追踪方法比较

    DKT xff1a Deep knowledge tracing In Advances in neural information processing systems 这是一种开创性的方法 xff0c 它使用单层LSTM模型来预测学生的
  • 机器学习 注意力 笔记资料贴

    Self Attention与Transformer详解 https zhuanlan zhihu com p 47282410 写的非常详细 https jalammar github io illustrated transformer
  • 图像的几何变换maketform imtransform imresize imcrop

    背景 几何变换是将图像像素从一个位置映射到另一个位置 几何变换有五种常见类型 xff1a 剪切变换 平移变换 缩放变换 旋转变换和投影变换 它们如图4 1所示 在该图中 xff0c 原始图像显示在 A 中 xff0c 而变换后的图像显示在
  •  决策树(Decision Tree)原理及实现

    决策树 xff08 Decision Tree xff09 原理及实现 一 算法简介 1 1 基本模型介绍 决策树是一类常见的机器学习方法 xff0c 可以帮助我们解决分类与回归两类问题 模型可解释性强 xff0c 模型符合人类思维方式 x
  • Python 一维及多维数组及基本操作

    2 创建一般的多维数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import numpy as np a 61 np array 1 2 3 dty
  • java操作word方式 设置国内镜像命令

    java操作word方式还有 个人认为通过jacob最好 xff0c 自己可以扩展 xff0c 网上除poi之外几乎全是java com技术实现的 1 Apache POI Java API To Access Microsoft Form
  • matlib 多种方法实现图像旋转不使用imrotate函数

    原理 方法很棒https blog csdn net qq 41140138 article details 104737705 方法一 function g 61 rotate image1 f theta M N 61 size f t
  • MATLAB实现满秩LU/QR等分解 及求方程组的解 范数

    矩阵分解 矩阵的LR分解 方阵A是非奇异的 clear A 61 2 1 4 4 3 13 2 2 20 format rat L U 61 lu A L U P 61 lu A 矩阵QR分解 Q R 61 qr A xff09 R为上三角
  • Deep Knowledge Tracing(DKT)具体实现

    有关dkt可参考的文章http blog kintoki me 2017 06 06 tensorflow dkt 问题陈述 传统的评价方法 xff0c 如考试和考试 xff0c 只允许在考试结束后对学生进行评价 因此 xff0c 这些方法
  • pandas数据预处理 缺失值

    缺失值的分类 按照数据缺失机制可分为 xff1a 可忽略的缺失 完全随机缺失 missing completely at random MCAR xff0c 所缺失的数据发生的概率既与已观察到的数据无关 也与未观察到的数据无关 随机缺失 m
  • 数据预处理之数据清洗案例

    建议学习文章 xff1a https zhuanlan zhihu com p 111499325 https mp weixin qq com s jNoXHO4qU34gcha4zOGRLA https mp weixin qq com
  • ERROR conda.core.link:_execute(502): An error occurred while installing package

    记录错误 ERROR conda core link execute 502 An error occurred while installing package xff1a http mirrors tuna tsinghua edu c
  • 深度学习之Bias/Variance偏差、方差

    偏差 xff08 Bias xff09 和方差 xff08 Variance xff09 是机器学习领域非常重要的两个概念和需要解决的问题 在传统的机器学习算法中 xff0c Bias和Variance是对立的 xff0c 分别对应着欠拟合
  • Image Processing in the Spatial Domain 空间域图像处理

    背景 二维卷积 在二维卷积中 xff0c 我们通过卷积核对输入图像进行卷积来计算输出图像 卷积核是一个小尺寸的矩阵 xff0c 例如3 3 5 5或5 7像素 xff1b 这个矩阵中的项称为卷积系数 在二维相关中 xff0c 我们通过将输入