当前位置: 首页 > article >正文

C# 图像镜像

测试页面:

图像镜像是图像旋转变换的一种特殊情况,通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心,将图像分为左右两部分进行堆成变换。如下:

垂直镜像通常是以原图像的水平中轴线为中心,将图像划分为上下两部分进行堆成变换的过程。如下图:

数学表达式:

矩阵表现形式:

C# 代码实现(都是8位深度、单通道500w图像,后面介绍24、32位深度):

 结果如下:

 耗时32ms,我们来优化此代码,如下:

结果如下:

 耗时15ms,性能提升了不少,但是还没有到极致,我们使用simd指令集优化,如下:

 

结果如下:

耗时3ms,性能再次提升!!!

simd指令解释:垂直镜像直接交换两个向量的元素即可,但是水平镜像不行,在交换位置前需要对向量内部元素进行位置颠倒,Avx2.Shuffle对32位向量低位和高位分开进行颠倒,所以我们需要使用Avx2.Permute2x128指令颠倒低位和高位。

对于24,它是以B、G、R顺序排列,对于32位深度,它是以B、G、R、alpha排列,如下(这里使用普通代码):

 附OpenCV Sharp代码:


http://www.kler.cn/a/350462.html

相关文章:

  • Mysql 主从复制原理及其工作过程,配置一主两从实验
  • 网络安全 | 什么是正向代理和反向代理?
  • Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
  • SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用
  • Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并)
  • postgres数据库中_varchar的数组存储方法如何查找
  • 微信小程序 - 供应链系统设计
  • Linux性能分析
  • 如何在Ubuntu上更改MySQL数据存储路径
  • 【优选算法】——双指针(下篇)!
  • AcWing 1024 装箱问题
  • 深度学习 size 属性
  • 特步引入IPD管理,钉钉项目 Teambition 助力高效产品研发管理
  • 第十二章 Spring之不得不了解的内容——AOP概念篇
  • ssh为什么是安全的?ssh怎么预防中间人攻击?
  • 【C语言】数据输出格式控制
  • 2.4 STM32启动过程
  • 操作系统(2) (进程调度/进程调度器类型/三种进程调度/调度算法)
  • Qt-系统线程安全(63)
  • 【系统架构设计师】案例专题二:系统开发基础考点梳理
  • Python 如何使用 Bert 进行中文情感分析
  • Linux网络命令:用于管理和显示网络路由表的工具route详解
  • KAN论文
  • PCL滤波器之面试总结
  • linux----cd和pwd命令
  • 基于yolov5的手机屏幕缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】