开发工具:
文件大小: 5mb
下载次数: 0
上传时间: 2019-09-03
详细说明:案例一:图片隐写术
案例二:自动找三相区
案例三: 过桥问题
案例四:合并长截图
案例五:XRD去背景
案例六:统计晶粒度
案例七:连通离散分量
案例八:Pandat网格
案例九:图片转图
案例十:电镜图片对比■案例一:信息安全的重要性已经今非昔比,偶然看到
Wik一篇图片隐写术( Steganography)的介绍,利用图片
颜色的最低有效位来承载信息,而信息承载前后图片在肉
眼下几乎无损,以此达到隐蔽的效果。其启发下,我研究
并拓展了其应用,根据信息量的大小,智能化的选用图片
中最低的1到3个有效位来承载信息,下面是代码实现过
程
前期探索:看看24位位图倒底可以用多少位来存储信息而不
至于图片在肉眼下失真
Image=
Grid
Catenate
unction
bit,
ItImage[image, Imagesize +Medium],
Image [Map[FromDigits[MapAt[1-t&, PadLeft[+, 16],-bitjil, 2]&3
IntegerDigits [ImageData(image,"Byte"l, 2],[311,"Byte", Imagesize, Medium]),
stye#,18,Bold,B1ue]&/e["用来承戴信息的图片",
TemplateApply{"个最低有位信息承载量均达到极限",bit]]/ 2 Range2,3]
用来承载信息的图片
2个最低有位信息承载量均达到极限
用来承载信息的图片
3个最低有位信息承载量均达到极限
由探索可知,最低两个有效位都是可以使用的,其实第三个
也可以使用,因为现实生活中的信息不可能与载图的二进制
完全互反,探索时假设的是第一位信息量都达到极限的情
况。
imageData ImageData[image,"Byte"]j
dim= Dimensions[imageData];
residueBit Mod [Times ee dim, 16];
imageCapacity= Times ee dim -residueBitj
imageCapacity+#/16&/e[2,31
183758,275625
也就是说上张图片如果用2个有效位存信息,可以存183750个
汉字而图片在肉眼下完全不变,我算了下,信息量差不多是
长篇小说《三体》的第一部(99470字),如果用3个有效位的
话可以达到275625字,此时图片如细看会稍有失真
下面把 information加载进载图片
encryptToImage [image information]:=
Module[(imageData, dim, residueBit, image Capacity, informationize, bitNumber,
carrierImageData, informationBin), imageData= ImageData[image,"Byte"]i
dim =Dimensions [imageData]j
residueBit= Mod[Times ee dim, 16]j
image Capacity Times ee dim-residueBitj
informationize Length[ ToCharactercode [information]]* 16+2i
bitNumber= Quotient [informationIze, image Capacity]i
carrierImageData= Fold[Bitclear [#1, #2]&, Flatten[imageData], Range [O, bitNumber ]] j
informationBin= Join [IntegerDigits[bitNumber, 2, 2]3
Flatten[PadLeft [#, 16]&/e IntegerDigits[ToCharacterCode[information],21]]j
If[bitNumber >23
Your amount of information is too big for encryption. You should get a larger image
or decrease your information size
Image
ArrayReshape
Bitor
PadRight [FromDigits[#, 2]&/2
Flatten [Reverse [ Partition[informationBin, image Capacity, image Capacity, 1,[]]], [21]
imageCapacity residueBit], carrierImageData], dim],"Byte]]]
information= stringRepeat需要加密的信息。"50]
斋要加密的信息。斋要加密的信息。斋要加密的信息。斋要加密的信息。斋要加密的信息。斋要加密的信息。
斋要加密的信息,斋要加密的信息,需要加密的信息,斋要加密的信息,斋要加密的信息。斋要加密的信息。
需要加密的信息:需要加密的信息:需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息
斋要加密的信息。需要加密的信息。斋要加密的信息。斋要加密的信息。需要加密的信息。斋要加密的信息。
需要加密的信息。斋要加密的信息。需要加密的信息。需要加密的信息,需要加密的信息。斋要加密的信息。
需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。
需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。
斋要加密的信息。斋要加密的信息:斋要加密的信息:斋要加密的信息:斋要加密的信息。斋要加密的信息。
需要加密的信息。需要加密的信息
afterEncrypt encryptToImage[image, information]
把 information从图片中解密出来
decodeImage [image】:
Module[iimage Data ImageData [image,Byte"], residueBit, informationCode, informationCodeLen,
outBitNumh, outBitNum FromDigits[BitGet[Flatten[imageData][[3i 21]30], 2]j
residueBit= Mod [Times ee Dimensions [imageData], 16]j
informationcode
Partition
Flatten [BitGet[Flatten[ imageData][[ ii Times ee Dimensions [imageData]-residueBit], #]&/e
Range[O, outBitNum]][[3j;], 16]i
informationCodeLen SparseArray[information Code] ["NonzeroPositions"][-1, 1]1j
FromCharacterCode[ FromDigits [# 2]&/einformationcode[[ ji informationCodeLen]1]]
decodeImage
需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。需要加密的信息。
斋要加密的信息。斋要加密的信息,需要加密的信息。斋要加密的信息。需要加密的信息。斋要加密的信息。
斋要加密的信息。斋要加密的信息。斋要加密的信息。斋要加密的信息。需要加密的信息。斋要加密的信息
等要加密的信息。需要加密的信息。斋要加密的信息:。需要加密的信息。需要加密的信息。需要加密的信息。
斋要加密的信息:希要加密的信息。斋要加密的信息。斋要加密的信息:斋要加密的信息。斋要加密的信息。
需要加密的信息。斋要加密的信息。需要加密的信息。斋要加密的信息,斋要加密的信息。斋要加密的信息。
斋要加密的信息。需要加密的信息。斋要加密的信息。需要加密的信息。需要加密的信息。斋要加密的信息。
斋要加密的信息:斋要加密的信息:需要加密的信息:斋要加密的信息。斋要加密的信息。希要加密的信息。
需要加密的信息。需要加密的信息。
对比加密前后的图片,确实可以做到肉眼下几乎无差别
Grid[Image[#, ImageSize - Medium] &/e (image, afterEncrypt),
stye#,B1ue,Bo1d&/e{"用来承载信息的图片","承载信息后的图片"]]
用来承载信息的图片
承载信息后的图片
应用:看似乎一张很小很寻常的图片,实际上我已经将刘慈
欣的《三体》全部放里面了
triBody= Import"D: mathematica\长篇小说\\6]《三体》.txt",
CharacterEncoding +"MacintoshChineseSimplified"3
triBodyEn encryptToImage [image, triBody]
Grid[Image(=, ImageSize+Medium]&/e(image, triBodyEn)
stye[m,Bue,Bol1d]&/{"用来承载信息的图片",承载长篇小说《三体》第一部的图片"}]
用来承载信息的图片
承载长篇小说《三体》第一部的图片
调出解码出来的《三体》的倒数10行核实一下
Snippet[decodeImage[triBodyEn],-10]
哦,这个设想中的系列叫《地球往事》,没有太多的意思,
科幻与其他幻想文学的区别就在于它与其实还牵着一根细线,这就使它成为现代神话而不是重话
古代神话在当时的读者心
中是其实的)。所以我一直认为,好看的科幻小说应该是把最空灵最疯狂的想象写得像新闻报道一般真实
往事的回忆总是真实的,自己希望把小说写得像是历史学家对过去的真实记
叙,但能不能做到,就是另一回事了
设想中《地球往事》的下一部暂名为《黑暗森林》,取自八十年代流行过的一句话:"城市就是森林,
每一个男人都是猎手,每一个女人都是陷讲。
哦,最后说的当然是最重要的:谢谢大家
刘慈欣
拓展应用:这其实是个突发其想的应用场景,如果不考虑图
片失真,只需要用图片来承载信息,那么可以直接把文
本、音频、视频等各种文件生成图片来存取,而存取图片的
成本是要远比存其它任何类型文件都要小的,市场上就有大
量的图床可用
把信息加密到图片的函数
encryptToImage [ expr]:=
Module[iinformation Compress [expr], imagewidth, image, image Data, dim, residueBit,
image Capacity, informationize, bitNumber, carrierImageData, informationBin],
imagewidth Ceiling [Sgrt[(StringLength[ Compress [expr]]*7+3)/3]1j
image= RandomImage[1, (imagewidth, imagewidth), ColorSpace +"RGB"1j
imageData ImageData [image, Byte I3
dim =(imagewidth, imagewidth, 3]i
residueBit= Mod[Times ee dim, 7]j
image Capacity Times ee dim-residueBiti
informationize Length[ ToCharacterCode [information]]+7+3i
bitNumber= Quotient [informationIze, image Capacity];
carrierImageData= Fold[Bitclear [#1, #2]&, Flatten[imageData], Range[O, bitNumber1]j
informationBin= Join [IntegerDigits[bitNumber, 2, 3]3
Flatten [PadLeft[*, 7]& /e IntegerDigits [ToCharacterCode [information], 2]11j
Image[
ArrayReshape[
Bitor L
PadRight FromDigits[#, 2]&/e
Flatten[Reverse[Partition[informationBin, image Capacity, image Capacity, 13 (1]],[21],
image Capacity+ residueBitl, carrierImageDatal, dim],"Byte"ll
把信息从图片中取出的函数
decodeImage[image ]:
Uncompress eModule[ [imageData= ImageData [image,"Byte"], residueBit, information Code,
informationCodeLen, outBitNum), outBitNum= FromDigits[BitGet[ Flatten[imageData][[ ii 311, 0], 2];
residueBit Mod[Times ee Dimensions [imageData], 7]j
informationcode
Partition D
Flatten[ BitGet [Flatten [imageDatal[[ ;i Times ee Dimensions [imageData]-residueBit1], #]&/e
Range [O, outBitNum]][[4591]37]3
informationCodeLen SparseArray[informationCode] ["NonzeroPositions ][[-1, 1]]j
FromCharacterCode [FromDigits [# 2]&/e informationCode[[ j; informationCodeLen]]]]
把长篇小说《三国演义》制作成图片
triCoutry=
encryptToImage[ Import"D: \\mathematica长篇小说\三国演义txt",
CharacterEncoding->"MacintoshChinesesimplified"ll
这图片看似杂乱,其实里面藏了本《三国演义》!解码出里
面倒数10行查看一下内容
Snippet [decodeImage [triCoutry],-10]
自此三国归于晋帝司马炎,为一统之基矣。此所谓“天下大势,合久必分,分久必合”者也
后来后汉皇帝刘禅亡于晉泰始七年,魏主曹奂亡于太安元年,吴主孙皓亡于太康四年,皆
善终。后人有古风一篇:以叙其事曰:
高祖提剑入咸阳,炎炎红日升扶桑;光武龙兴成大统,金鸟飞上天中央;哀哉献帝绍海字。红轮西坠咸池傍!
何迸无谋中贵乱,凉州董卓居朝堂;王允定计诛逆党,李郭汜兴刀枪;四
方盗贼如蚁聚,六合奸雄音鹰扬:孙坚孙策起江左,哀绍哀术兴河梁;刘焉父子据巴蛋,刘表军旅屯荆裹
张燕张鲁篛南郑,马跨韩遂守西凉;陶谦张绣公孙增,各逞雄才占一方:曹
操专权居相府,牢笼英俊用文武;威挟天子令诸侯,总领貌貅镇中土。楼桑玄德本皇孙,义结关张愿扶主
东西奔走恨无家:将寡兵微作羁旅;南阳三顾情何深:卧龙一见分寰字;先
取荆州后取川,霸业图王在天府;呜呼三戴逝升遐,白帝托孤堪痛楚!孔明六出祁山前,愿以只手将天补
何期历数到此终,长星半夜落山坞!姜维独凭气力高,九伐中原空劬劳;钟
会邓艾分兵进,汉室江山尽属曹。丕答芳髦才及奂,司马又将天下交;受禅台前云雾起,石头城下无波涛;
陈留归命与安乐,王侯公爵从根苗。纷纷世事无穷尽,天数茫茫不可逃:鼎
足三分已成梦,后人凭吊空牢骚
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.