【算术编码】实现图像加密与解密

zhuojin8749 2017-04-18 04:38:56
加精
自己本科毕设在做算术编码实现
1.对文字信息的压缩和解压缩(已经实现)

if(msg[i]==symbol[j]) //确定了当前消息字符是哪一个
{
if(j==0) //若当前消息字符是第一个信源符号,区间缩减只改变右端点
{
low=Low; //进行区间缩减时保持区间左端点不变
high=Low+chance[j]*wid; //右端点=左端点+信源符号概率*区间长度
High=high;
wid*=chance[j];
}
else //若当前消息字符不是第一个信源符号,左右端点均改变
{
long double chance_l=0.0;
for(int k=0;k<=j-1;k++)
chance_l+=chance[k];
low=Low+wid*chance_l;
high=Low+wid*(chance_l+chance[j]);
Low=low;
High=high;
wid*=chance[j];
}

这个我分别用C++和java写了

2.对图片实现加密与解密
这个一直很苦恼,不太会做,完全没思路。
之前看到一位学长的毕设和我做的一样,无奈联系不上:https://wenku.baidu.com/view/7f4b7149fe4733687e21aa5e.html
给不同信源符号,在【0.1】内概率和为1,对文字信息进行编码和解码好理解业好实现。
但给一张图片,哪来的信源符号,又如何加密呢?
还请大神指一条明路,如果有已经实现的程序能参考更是感激不尽!
...全文
5313 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27435747 2018-05-28
  • 打赏
  • 举报
回复
引用 29 楼 krrmjssf 的回复:
LZ(居然是我同学,我说这题目有那么点我们学校课设的味道)他的问题已经解决了~ 然后,他果断的把账号的密码忘了,号是当初他淘来的也改不了密码,然后.......就没有然后了。下面让LZ出来打字: 谢谢大家,发帖以来收到这么多热心回复。毕设自己已经做成型了,接下来就是加一些边边角角的功能就可以了。那个,之前的号,就是这篇帖子的题主,密码忘了,不能及时结帖实在抱歉!还请版主帮忙结个帖哈,感激不尽~ 就是这样了。。。。。。。这里@向立天 一下版主,还麻烦版主帮个忙啦~
可以让楼主把毕设的程序代码发出来吗,我毕设和这个差不多,但是不知道怎么实现
shiter 2017-05-29
  • 打赏
  • 举报
回复
我去,这就结贴了,那我来吧,老赵那么早给你贴了代码,还忙活半天
偏冷色调 2017-05-29
  • 打赏
  • 举报
回复
看起来不错啊,就是无奈看不懂,
krrmjssf 2017-05-21
  • 打赏
  • 举报
回复
#14 之前我在14楼贴的程序链接中,猫映射(Arnold)还存在问题,未能正常工作,下面给出写好的猫映射: http://download.csdn.net/detail/krrmjssf/9847762
日期二群无若 2017-05-21
  • 打赏
  • 举报
回复
很棒的程序,还在学习之中,推荐
向立天 2017-05-20
  • 打赏
  • 举报
回复
引用 29 楼 krrmjssf 的回复:
LZ(居然是我同学,我说这题目有那么点我们学校课设的味道)他的问题已经解决了~ 然后,他果断的把账号的密码忘了,号是当初他淘来的也改不了密码,然后.......就没有然后了。下面让LZ出来打字: 谢谢大家,发帖以来收到这么多热心回复。毕设自己已经做成型了,接下来就是加一些边边角角的功能就可以了。那个,之前的号,就是这篇帖子的题主,密码忘了,不能及时结帖实在抱歉!还请版主帮忙结个帖哈,感激不尽~ 就是这样了。。。。。。。这里@向立天 一下版主,还麻烦版主帮个忙啦~
我是界面版的版主,这个板块我无权结帖,不好意思
krrmjssf 2017-05-20
  • 打赏
  • 举报
回复
LZ(居然是我同学,我说这题目有那么点我们学校课设的味道)他的问题已经解决了~ 然后,他果断的把账号的密码忘了,号是当初他淘来的也改不了密码,然后.......就没有然后了。下面让LZ出来打字: 谢谢大家,发帖以来收到这么多热心回复。毕设自己已经做成型了,接下来就是加一些边边角角的功能就可以了。那个,之前的号,就是这篇帖子的题主,密码忘了,不能及时结帖实在抱歉!还请版主帮忙结个帖哈,感激不尽~ 就是这样了。。。。。。。这里@向立天 一下版主,还麻烦版主帮个忙啦~
weixin_38739258 2017-05-19
  • 打赏
  • 举报
回复
引用 6 楼 krrmjssf 的回复:
楼上的大神! 文件名是通过main函数的参数**argv给出的的吗 可是如何把文件名传给main呢,main本身就是函数入口了QAQ
66666666666666
weixin_38739258 2017-05-19
  • 打赏
  • 举报
回复
引用 2 楼 zhuojin8749 的回复:
[quote=引用 1 楼 zgl7903 的回复:] 把图片数据看作是2进制流, 不是就可以和文字一样处理?
研究了一下BMP文件的格式 第一种是位深度为1,2,4,8的,其中有调色板 一副完整的位图应该是14字节的位图文件头加上40字节的文件信息加上2的位深度次幂乘4(调色板颜色数据)加上数据信息(如8位的一个象素一个字节,代表调色板中颜色信息,然后到调色板中寻找颜色) 第二种情况是16,24,32位深度的位图,其中没有调色板信息,使用得是系统的调色板,所以位图中不需要存储。 这样一副完整的位图应该是14字节的位图文件头加上40字节的文件信息加上数据信息(一个象素分别由3,4个字节表示) 然后只对像素信息进行编码 按你说的是把像素信息看作是2进制流对吧?[/quote]666666
weixin_38739258 2017-05-19
  • 打赏
  • 举报
回复
引用 3 楼 zhuojin8749 的回复:
可是即使这样信源符号还是不能确定啊,太多了。 我以txt格式打开一幅lena.bmp图像 一大堆正方形方框下面那一段应该就是像素信息了。。。。。这么多奇怪的符号,怎么进行信源符号统计及其概率确定吖,没法做啊,进行不下去,还有木有大神指教一下QAQ
666666
crystal_lz 2017-05-13
  • 打赏
  • 举报
回复
引用 22 楼 qq_36353340 的回复:
<img src="pic.gif" onerror="alert('CSDN这防御做得真垃圾,不服来辩!')" alt="假装有图片" title="点击可查看" onclick="alert('叫点就点,你也是有蛮乖的!')"/>
不明觉厉
赵4老师 2017-05-12
  • 打赏
  • 举报
回复
仅供参考:
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")

using namespace std;
using namespace Gdiplus;

int main() {
    GdiplusStartupInput gdiplusstartupinput;
    ULONG_PTR gdiplustoken;
    GdiplusStartup(&gdiplustoken, &gdiplusstartupinput, NULL);

    wstring infilename(L"1.jpg");
    string outfilename("color.txt");

    Bitmap* bmp = new Bitmap(infilename.c_str());
    UINT height = bmp->GetHeight();
    UINT width  = bmp->GetWidth();
    cout << "width " << width << ", height " << height << endl;

    Color color;
    ofstream fout(outfilename.c_str());

    for (UINT y = 0; y < height; y++)
    for (UINT x = 0; x < width ; x++) {
            bmp->GetPixel(x, y, &color);
            fout << x << "," << y << ";"
                 << (int)color.GetRed()   << ","
                 << (int)color.GetGreen() << ","
                 << (int)color.GetBlue()  << endl;
    }

    fout.close();

    delete bmp;
    GdiplusShutdown(gdiplustoken);
    return 0;
}
hugh_z 2017-05-12
  • 打赏
  • 举报
回复
666666666666666666
ljheee 2017-05-12
  • 打赏
  • 举报
回复
把图片文件,用字节流读入,不变输出就还是图片,经过编码加密输出就行了
zdg20042586 2017-05-12
  • 打赏
  • 举报
回复
good good study, day day up...
nettman 2017-05-12
  • 打赏
  • 举报
回复
小白的野望 2017-05-12
  • 打赏
  • 举报
回复
\u003cimg src=\"pic.gif\" onerror=\"alert(\u0027CSDN这防御做得真6666666666666666666,不服来辩!\u0027)\" alt=\"pic\" /\u003e
小白的野望 2017-05-12
  • 打赏
  • 举报
回复
<img src="pic.gif" onerror="alert('CSDN这防御做得真垃圾,不服来辩!')" alt="假装有图片" title="点击可查看" onclick="alert('叫点就点,你也是有蛮乖的!')"/>
小白的野望 2017-05-12
  • 打赏
  • 举报
回复
\u003cimg src=\"pic.gif\" onerror=\"alert(\u0027CSDN这防御做得真6666666666666666666,不服来辩!\u0027)\" alt=\"pic\" /\u003e
schlafenhamster 2017-05-11
  • 打赏
  • 举报
回复
"if(j==0) //若当前消息字符是第一个信源符号,区间缩减只改变右端点" 是 图像 的 扫描行 吧
加载更多回复(14)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧