图像处理之约瑟夫置乱加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5hb.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新。

①申请搬家后,迟迟未能收到申请搬家的码

②再熟悉一下算法

③联系键盘打字

基于以上三点,遂将博文重新敲一遍。

约瑟夫置乱加密

如果看了前两篇博客的朋友都会知道这个思路,如果没有看,那么请先看这里:

图像处理之Logistic混沌序列加密

图像处理之Logistic混沌置乱加密

如果你看了,那么好极了,下面我们利用约瑟夫遍历来产生这个序列。什么是约瑟夫遍历呢,先介绍一下:约瑟夫环。

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

大概知道了吧,或许你已经想到该怎么做了。对的,我们就是按照这个算法来进行遍历,只是n的长度扩展到M*N(假如待加密图像为M*N大小),这样就可以得到一个一维乱序了,在转为二维乱序,这就是我们想要的二维置乱序列。

当然,在遍历之前我们需要知道几个参数:

       ①起始位置

       ②间隔(暂称约瑟夫距离)

这些参数,我们就作为秘钥。

下面是MATLAB代码,因为每个程序员看别人的代码都不是很舒服,所以对于代码不多解释,看得懂的就看,看不懂的自己写也不麻烦。

%--------------------------------------------------------------------------
function v=joseph_traverse(picture,start,space)
t=picture;
[a,b]=size(t);
t=reshape(t',1,a*b);
value=a*b;
m=zeros(1,value);%存储标记序列
e=zeros(1,value);%存储置乱序列
cnt1=0;%用于记录下标
cnt2=0;%用于记录距离
flag=1;
while flag==1
    start=mod(start,value);
    if start==0%下标越界处理
        start=value;
    end
    while cnt2~=space
        %跳过标记区
        while m(1,start)==1
            start=start+1;
            start=mod(start,value);
            if start==0
                start=value;
            end
        end
        cnt2=cnt2+1;
        start=start+1;
        start=mod(start,value);
        if start==0
            start=value;
        end
    end
    start=mod(start-1+value,value);
    if start==0
        start=value;
    end
    cnt2=0;%清除距离,一遍下一次遍历计数
    cnt1=cnt1+1;
    m(1,start)=1;%已遍历过该点,标记防止重复遍历
    e(1,cnt1)=t(1,start);
    %遍历结束
    if cnt1==value
        flag=0;
    end
end
v=reshape(e,a,b);
v=uint8(v);
%完

时间: 2024-10-09 14:49:12

图像处理之约瑟夫置乱加密的相关文章

图像处理之Logistic混沌置乱加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5gi.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新. ①申请搬家后,迟迟未能收到申请搬家的码 ②再熟悉一下算法 ③联系键盘打字 基于以上三点,遂将博文重新敲一遍. Logistic混沌置乱加密: 这里再根据Logistic混沌进行另一种置乱:位置置乱. 什么是位置置乱,顾名思义就是把图像中某一像素点的位置,移动到另一目的点.我们知道这个目的点当然是越随机越好.这个过程

自己动手用C++写的图像处理软件(不调用外部包)

说到图像处理软件你会想到什么?Photoshop?CorelDRAW?美图秀秀?还是ACDSee的图像编辑模块? 说到实现数字图像处理算法,你又会想到什么?Matlab?OpenCV? 能不能自己动手用C++写一个小型的图像处理软件,实现一些图像处理算法,而不调用任何外部的包?这个可以有! 多年以前,甚至是主页君还在读书的时候,曾经尝试在VC++ 6.0中编写了最初版本的MagicHouse(一款小型的图像处理软件).后来当我写了我的第一本图像处理算法书时,我用VC++ 2005更新了它.再后来

图片加密

一.图片概述 每种图片都有自己的文件格式和压缩方式:文件格式主要由文件头和文件域组成.压缩方式有很多种如PNG格式的图片采用调色板或者行程编码方式的进行压缩.PNG采用无损压缩,jpg则采用有损压缩的方式进行压缩等等. 二.图像加密种类 1.置乱加密:有RGB平移置乱.HENON置乱.混沌置乱等; 2.灰度加密:DES加密.HILL加密.LOGISTIC加密.ECA加密等; 3.混合加密:复合混沌加密.baker加密.位平面加密等; 4.频域加密:DCT加密.HAAR加密等; 这些加密算法有的在

图像处理之Logistic混沌序列加密

前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5bm.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新. ①申请搬家后,迟迟未能收到申请搬家的码 ②再熟悉一下算法 ③联系键盘打字 基于以上三点,遂将博文重新敲一遍. Logistic混沌置乱,先不说有多复杂,其实很简单. Logistic函数是源于一个人口统计的动力学系统,其系统方程形式如下:  X(k+1) = u * X(k) * [1 - X(k)],(k=0,1

图像处理算法交流群群规和近期福利活动

作为一名资深的图像处理算法业余爱好者,为了方便同道中人交流学习,我特别建立了一个QQ群(群号:529549320),出于新人培训之目的,也为了免去我每次都重复群规之繁琐,更为了方便群活动之开展特借CSDN宝地发此贴,以做一劳永逸之举. 关于入群资质: 1)无论你是大神还是小白,我们都欢迎: 2)无论你是业界专家还是在校学子,我们都欢迎: 3)无论你是专业精英还是业余爱好者,我们都欢迎. 总之,"是故无贵无贱,无长无少,道之所存,师之所存也". 但是,为了防止你因为不慎而加错群,我们特别

matlab练习程序(Hilbert图像置乱)

正好刚写了Hibert生成曲线,不如再加一篇应用的程序. 关于Hilbert图像置乱,我在网上搜的应用领域主要集中在数字水印和图像加密上,而这两个领域我都没怎么接触过. 大部分的图像置乱都是如下图的置乱1所示,至于置乱2则是我不小心生成的. 置乱1是先把原图按hilbert曲线进行赋值,拉成一条一维数组,再reshape成一副图像. 置乱2是先把原图reshape成一维数组,然后再按hilbert曲线进行赋值,生成一副图像. 我感觉都差不多,网上置乱1更常见些,置乱2好像就没见过,不过这都算置乱

从零开始的Opencv图像处理项目实战课程设计

一.简介.1.通过课程能够获得什么?     a.对于想学习图像处理的同学能够快速入门:     b.能够快速搭建起来"具备解决实际问题能力的"软硬件平台:     c.能够积累一套可以不断复用的图像处理软件框架:     d.初步形成图像处理的思维能力,灵活应对各种需求.2.课程包括哪些内容     a.综述.课程的核心是开发一个基于Opencv的"答题卡"识别系统.不仅包括算法,而且包括软件框架,而且包括硬件选配.     b.opencv图像处理的环境配置.运

PHP图像处理类库及演示分享

简单写了一个PHP的图像处理类库,虽然功能比较少,但是目前也没用到太高级的,以后用到了再填吧,或者哪位给点建议加上什么功能,或者有什么需求可以跟我说,我有时间加上,如果哪位对这个类库进行了扩展的话,还麻烦拿出来大家分享一下,代码现在是能用就行,考虑的东西不是很多,有什么更好的建议请告诉我,谢谢 Img.php <?php /** * Created by PhpStorm. * User: MCtion * Date: 2015/5/14 0014 * Time: 15:36 * 简单的图像类库

混沌方法的数字图像加密

Abstract:目前混沌系统与加密技术相结合是现如今最热门的一个课题,虽然有大量的加密算法面世,但是这些加密算法并不成熟,仍然需要进一步的研究.本文采用像素位置置乱变换和像素值替代变换相结合的加密思想,设计出一种基于混沌的数字图像加密算法.引入了整数域上的逆仿射变换,算法中采用二维 logistic 混沌映射相结合的方法,生成多组混沌序列,像素置乱变换与灰度值替换都由这些混沌序列所控制.多混沌序列产生的密钥空间大于单一的混沌序列所产生的密钥空间,因此本文研究的算法加密强度很高. 1. 虫口模型