NEFU数字图像处理(4)图像几何变换

一、图像几何变换基础

1.1概述

定义:
使原始图像能够按照需要,产生大小、形状、位置等方面的几何变化·

本质特征:

图像几何变换不是改变图像的像素值,而是改变像素所在的位置。

 1.2相关概念

二维图像几何变换可通过矩阵线性变换来实现,为了能够使用统一的矩阵线性变换形式来表示二维图像的各种几何变换,引入了齐次坐标。


齐次坐标:用n+1维向量来表示n维向量的方法

 1.3图像平移变换

将图像上所有的像素点,按照水平方向和垂直方向给定的偏移量(为整数)移动。平移后图像上的每个像素点都可以在原图像中找到对应像素点。即平移后的图像与原图像相同,只是位置发生了变化·

1.4图像镜像变换

镜像变换也称为对称变换(或反射变换)
图像镜像变换具体分为两种形式:

  • 水平镜像
  • 垂直镜像

镜像后图像上的每个像素点都可以在原图像中找到对应像素点。

1.5图像旋转变换

将图像上的所有像素点绕图像中心旋转相同角度。
令逆时针旋转角度为正,顺时针旋转角度为负。 

 举例

 图像旋转之后,出现以下两个现象:

  • 像素的排列不是完全按照原有的相邻关系。
  • 出现空洞点,会影响图像画面质量。

插值法

行插值(或列插值)
第1步:从上到下逐行扫描,找出当前行中第一个和最后一个非背景点,将其坐标记作(i,k1)和(i,k2)用行号和列号表示)

1.6图像比例缩放变换

将原图像在x轴方向缩放 fx 倍,在y轴方向缩放 fy倍,从而获得一幅新图像

出现的问题:经过比例缩放后,新图像中的像素点可能在原图像中找不到相对应的像素点。

解决方法:灰度插值处理

  • 最邻近插值法
  • 双线性插值法

 最邻近插值法

图像比例缩小变换 

图像比例放大变换 

 双线性插值法

 

1.7图像错切变换

错切变换可以使图像产生扭变。
图像错切分为水平方向错切和垂直方向错切两种形式。

水平错切

原理:图像水平错切,只在水平方向上产生一段偏移量,而垂直方向保持不变,即只在水平方向上独立变化。设原图像上某像素点P0(x0, y0),经水平方向错切之后到像素点P(x, y)。

 

 垂直错切

原理:图像垂直错切,只在垂直方向上产生一段偏移量,而水平方向保持不变,即只在垂直方向上独立变化。设原图像上某像素点P0(x0, y0),经垂直方向错切之后到像素点P(x, y)。

 

1.8图像的复合变换 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/158024.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

160. 相交链表、Leetcode的Python实现

博客主页:🏆看看是李XX还是李歘歘 🏆 🌺每天分享一些包括但不限于计算机基础、算法等相关的知识点🌺 💗点关注不迷路,总有一些📖知识点📖是你想要的💗 ⛽️今…

利用win32的GetLastInputInfo函数实现锁屏(C#)

前两天看到群里面讨论这个问题,刚好我们上一家公司的系统也有这个功能,就研究了一下,我们这边实现这个功能的目的如下:当用户长时间不操作系统时,自动退出系统并退回到登录界面,想要使用系统,就…

【Linux学习笔记】进程概念(下)

进程地址空间1. 虚拟地址2. 什么是进程地址空间3. 进程地址空间的映射。4. 地址空间存在的意义5. 写时拷贝 进程地址空间 1. 虚拟地址 来看这样一段代码。 #include <stdio.h> #include <unistd.h>int global_value 100;int main() {pid_t id fork();if(id &l…

非关系型数据库Redis的安装【Linux】及常用命令

前言 Redis&#xff08;Remote Dictionary Server&#xff09;是一种开源的内存数据库管理系统&#xff0c;它以键值存储方式来存储数据&#xff0c;并且支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。Redis最初由Salvatore Sanfilippo开发&#xff0c…

苹果cms论坛多播放源自动采集在线影视网站

苹果 cms 论坛一个基于 vue 和 gin 实现的在线观影网站 项目采用 vite vue 作为前端技术栈, 使用 ElementPlus 作为 UI 框架进行开发 后端程序使用 Gin gorm go-redis 等相关框架提供接口服务, 使用 gocolly 和 robfig/cron 进行公共影视资源采集和定时更新功能 目前用户…

vscode debug skills

1) VSCode 调试 C/C 代码时&#xff0c;如何显示动态分配的指针数组。 创建一个动态分配的一维数组: int n 10; int *array (int *)malloc(n*sizeof(int)); memset(array, 1, n*sizeof(int)); 如果直接 Debug 时查看 array 指针&#xff0c;并不能看到数组所有的值。 查看…

行业揭秘:腾讯共享wifi码推广零加盟费是真的吗?

近年来&#xff0c;“共享经济”概念在商业领域取得了巨大成功。共享WiFi贴码成为共享经济的一种典型案例&#xff0c;被越来越多的人看作是一种低风险、高回报的投资方式。而在这个市场中&#xff0c;腾讯WiFi码推广以“零加盟费”而备受关注。本文将探讨腾讯WiFi码推广零加盟…

uniapp 使用 UDP

一、搭建UDP服务端&#xff0c;nodejs const dgram require("dgram");const message Buffer.from("你好&#xff0c;这是一个UDP广播消息"); const port 3000; // 用你想要的端口替换这里// 创建一个UDP套接字 const socket dgram.createSocket("…

pytorch笔记 GRUCELL

1 介绍 GRU的一个单元 2 基本使用方法 torch.nn.GRUCell(input_size, hidden_size, biasTrue, deviceNone, dtypeNone) 输入&#xff1a;&#xff08;batch&#xff0c;input_size&#xff09; 输出和隐藏层&#xff1a;&#xff08;batch&#xff0c;hidden_size&#xf…

服务器遭受攻击如何处理(记录排查)

本文的重点是介绍如何鉴别安全事件以及保护现场的方法&#xff0c;以确保服务器负责人能够在第一时间对安全攻击做出反应&#xff0c;并在最短时间内抵御攻击或减少攻击所带来的影响。 在服务器遭遇疑似安全事件时&#xff0c;通常可以从账号、进程、网络和日志四个主要方面进…

ssh登录界面变成vim提示,进不去系统

是ubuntu系统 使用远程连接root&#xff0c;进去后发现界面变成vim编辑器的介绍界面了 使用普通用户登录 查询用户的登录shell是不是有问题 sudo vim /etc/passwd 发现用户shell变成了vim编辑器 修改为/bin/bash就可以正常登录了 重新登录测试就正常了

华为云服务器,在线安装MySQL

需求 在华为云服务器上&#xff0c;部署MySQL数据库&#xff0c;通过 公网IP 访问数据库。 通过 yum &#xff0c;在线安装MySQL&#xff1b;配置远程连接&#xff0c;开放3306端口&#xff0c;能够通过公网访问。 云服务器配置说明 本文所使用的 华为云服务器 配置如下。 …