matlab練習程序(Hilbert圖像置亂)


正好剛寫了Hibert生成曲線,不如再加一篇應用的程序。

關於Hilbert圖像置亂,我在網上搜的應用領域主要集中在數字水印和圖像加密上,而這兩個領域我都沒怎么接觸過。

大部分的圖像置亂都是如下圖的置亂1所示,至於置亂2則是我不小心生成的。

置亂1是先把原圖按hilbert曲線進行賦值,拉成一條一維數組,再reshape成一副圖像。

置亂2是先把原圖reshape成一維數組,然后再按hilbert曲線進行賦值,生成一副圖像。

我感覺都差不多,網上置亂1更常見些,置亂2好像就沒見過,不過這都算置亂嘛。

也可以先用置亂1生成一副圖像,然后把生成的圖用置亂2再生成一副圖,那就更亂了,不過再亂也都是能夠恢復原圖的。

原圖:

置亂1:

置亂2:

部分函數在上篇,代碼如下:

clear all;close all;clc;

h=256;
w=256;
n=8;   
img=imread('lena.jpg');
imshow(img,[])

imgn1=zeros(1,h*w);
imgn2=zeros(h,w);

[x,y]=hilbert(n);       
x=floor((x+0.5)*w)+1;
y=floor((y+0.5)*h)+1;

l=length(x);
img2=reshape(img,[1,h*w]);
for i=1:l
    imgn1(i)=img(y(i),x(i));
    imgn2(y(i),x(i))=img2(i);
end

imgn1=reshape(imgn1,[h,w]);

figure;
imshow(imgn1,[]);
figure
imshow(imgn2,[])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM