23数字图像置乱技术(matlab程序)

1.简述

      

一、引言


所谓“置乱”,就是将图像的信息次序打乱,a像素移动到b像素位置上,b像素移动到c像素位置上,……,使其变换成杂乱无章难以辨认的图片。数字图像置乱技术属于加密技术,是指发送发借助数学或者其他领域的技术,对一幅有意义的数字图像做变换,使之变成一幅杂乱无章的图像用于传输。在图像传输过程中,它通过对图像像素矩阵的重排,破坏了图像矩阵的相关性,使非法截获者无法从杂乱无章的图像中获得原图像信息,以此实现信息的加密。接收方经去乱解密可恢复原图像。

二、图像置乱原理


2.1 图像置乱的实质

破坏相邻像素点间的相关性。

图像置乱的实现过程:置乱关系:原始图像A0,映射关系&,置乱图像A1,原图到置乱图像的关系可表示为:

2.2 Arnold变换与反变换应用

Arnold变换:又称猫脸变换,矩阵表示为:


(x’,y’)是图像中(x,y)的像素变换后的新位置。反复进行变换即可得到置乱的图像。

二维Arnold变换的周期性:

逆变换:

无需知道变换的周期,直接根据置乱次数即可恢复出原图像。

2.代码

 

function chengxu()
A=imread('lena.png');
figure,imshow(A);
title('原图像(256*256)');

for K=1:16   %置乱16次
    B=zhiluan(A);  %调用zhuluan函数,实现置乱
    figure,imshow(B);
    title(['置乱',num2str(K),'次后的图像'])
    A=B;
end

end

function B=zhiluan(A)
%此函数将图像A置乱,输出置乱后的图像B
[M,N]=size(A);
for x=1:N
    for y=1:N
        if x<y   %计算(x,y)点映射到B图像的坐标(x1,y1)
            x1=x-y+N+1;
            y1=-x+N+1;
        else
            x1=x-y+1;
            y1=-x+N+1; 
        end
        B(x1,y1)=A(x,y);   %B图像的像素幅值
    end
end
end
 

 

3.运行结果

67cde17b903e40ddbe42a73a7ca922cf.png

 77f2c81829e249e3937ce2468548f384.png

 8bf34b65df4f472c809a1926da1c492d.png

 35c96377da044344b4347cda174fd2c6.png

 a1d82fa66fff4cc0a7f97a5ba12f6c2e.png

 61ce430b7b644690b0ca40eb649a6340.png

 

 

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

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

相关文章

6.EFLFK(EFLK+kafka)

文章目录 EFLFK(EFLKkafka)zookeeper概述Zookeeper 特点数据结构和工作场景选举机制&#xff08;重要&#xff09;总结部署Zookeeper kafka为什么用消息队列&#xff08;MQ&#xff09;中间件使用消息队列的好处消息队列模式消息队列总结&#xff1a;kafka概述Kafka特性Kafka架…

怎样优雅地增删查改(六):按任意字段关键字查询

文章目录 实现应用测试 实现 定义按任意字段关键字查询过滤器&#xff08;IKeywordOrientedFilter&#xff09;接口&#xff0c;查询实体列表Dto若实现该接口&#xff0c;将筛选指定的目标字段&#xff08;TargetFields&#xff09;包含指定的关键字&#xff08;Keyword&#…

基于springboot的地铁轨道交通运营系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

推荐Selenium 自动化测试实战

你将获得 深入 Selenium 源码、原理、封装、技巧&#xff1b; unittest、pytest、DDT、POM 迭代测试方法&#xff1b; 大型项目分布式测试解决方案&#xff1b; Jenkins 持续集成和交付。 演示地址&#xff1a;www.runruncode.com/portal/article/index/id/19451/cid/85.html 课…

Java设计模式-责任链(Chain of Responsibility)模式

介绍 Java责任链&#xff08;Chain of Responsibility&#xff09;设计模式是指很多处理对象构成一个链&#xff0c;链中前一个对象指向后一个对象。请求在链中传递&#xff0c;一个请求可以被一个或者多个对象处理。调用方&#xff08;即客户端&#xff09;不知道请求会被链中…

Node连接Mongodb数据库

1.初始化 npm init 2.安装mongoose npm i mongoose 3.导入mongoose const mongooserequire("mongoose") 4.连接mongodb服务 mongoose.connect("mongodb://127.0.0.1:27017/user") 说明&#xff1a;mongodb是协议,user是数据库&#xff0c;如果没有会自动创…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 13 日论文合集)

文章目录 一、检测相关(8篇)1.1 Exposing the Fake: Effective Diffusion-Generated Images Detection1.2 Large Class Separation is not what you need for Relational Reasoning-based OOD Detection1.3 Visualization for Multivariate Gaussian Anomaly Detection in Imag…

matlab学习指南(1):matlab初步入门详细介绍

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

开源预训练框架 MMPRETRAIN官方文档(概览、环境安装与验证、基础用户指南)

MMPretrain是全新升级的开源预训练框架。它已着手提供多个强大的预训练骨干网并支持不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和MMSelfSup&#xff0c;并开发了许多令人兴奋的新功能。目前&#xff0c;预训练阶段对于视觉识别至关重要。凭借丰富而强…

IO线程NO

在处理问题&#xff1a; Got fatal error 1236 from master when reading data from binary log: Could not find first log file name in binary log index file 好翻译过来就是&#xff1a; 从二进制日志读取数据时&#xff0c;从主服务器收到致命错误 1236&#xff1a;“无法…

云原生日志Agent/Aggregator

Loggie是一个基于Golang的轻量级、高性能、云原生日志采集Agent和中转处理Aggregator&#xff0c;支持多Pipeline和组件热插拔&#xff0c;提供了&#xff1a; ● 一栈式日志解决方案&#xff1a; 同时支持日志中转、过滤、解析、切分、日志报警等 ● 云原生的日志形态&#xf…

Linux信号机制

转自&#xff1a;深入理解Linux信号机制(1.0)_城中之城的博客-CSDN博客 一、信号机制概览 相信大家对信号并不陌生&#xff0c;很多人都用过kill命令或者CtrlC组合键杀死过进程&#xff0c;或者遇到过程序因为收到SIGSEGV信号而崩溃的。而对信号的基本原理&#xff0c;估计很…