修改最大畫素值的可逆數字演算法的實現

2021-08-22 15:57:59 字數 2575 閱讀 4691

%designed by 李立宗

%[email protected]

%t4311.m

c=imread('e:\lena.bmp');

subplot(1,3,1),imshow(c),title('嵌入水印前影象');

[m,n]=size(c);

dix=zeros(255);

for i=1:512

for j=1:512

for k=1:255

if c(i,j)==k

dix(k)=dix(k)+1;

endend

endend

% subplot(3,3,2),plot(dix);

max=dix(1);

for i=1:255

if max

max=dix(i);

maxi=i;

endend

maxc1=c;

for i=1:512

for j=1:512

if c(i,j)

c1(i,j)=c(i,j)-1;

else

c1(i,j)=c(i,j);

endend

enddix2=zeros(255);

for i=1:512

for j=1:512

for k=1:255

if c1(i,j)==k

dix2(k)=dix2(k)+1;

endend

endend

% subplot(3,3,3),plot(dix2);

% subplot(3,3,4),plot(dix,'r'),hold on,plot(dix2,'g:');

mark=imread('e:\logo1.bmp');

mark=im2bw(mark);

subplot(1,3,2),imshow(mark),title('水印影象');

%讀入水印影象,並將之二值化處理

% figure,imshow(mark),title('水印影象');

mark1=zeros(1,1600);

n=1;

for i=1:40

for j=1:40

mark1(n)=mark(i,j);

n=n+1;

endend

% mark1=reshape(mark,1,1600);

%測試mark1的正確與否

% n=1;

% for i=1:40

% for j=1:40

% mark2(i,j)=mark1(n);

% n=n+1;

% end

% end

% subplot(1,3,3),imshow(mark2),title('水印影象');

c2=zeros(512,512);

c2=c1;

n=0;

for i=1:512

for j=1:512

if c2(i,j)==maxi

n=n+1;

if(n==1600)

n=1;

endif mark1(n)==1

c2(i,j)=c2(i,j)-1;

endend

endend

% n=1;

% for i=1:512

% for j=1:512

% ifc2(i,j)==maxi && mark1(n)==1

% c2(i,j)=c2(i,j)-1;

% n=n+1; %

% end

% end

% end

subplot(1,3,3),imshow(c2),title('嵌入水印後影象');

markshow=zeros(1,5000);

%分配乙個大陣列,這樣可以儲存冗餘量

n=1;

for i=1:512

for j=1:512

if c2(i,j)==maxi

markshow(n)=0;

n=n+1;

elseif c2(i,j)==(maxi-1)

markshow(n)=1;

n=n+1;

endend

endmarkshow;

markshow1=zeros(40,40);

%定義乙個陣列,用來儲存恢復的水印

n=1;

for i=1:40

for j=1:40

markshow1(i,j)=markshow(n);

n=n+1;

endend

% subplot(1,3,3),imshow(markshow1),title('恢復水印影象');

c3=c2;

for i=1:512

for j=1:512

if c2(i,j)

c3(i,j)=c2(i,j)+1;

else

c3(i,j)=c2(i,j);

endend

end% subplot(1,3,3),imshow(c3),title('恢復原始載體影象');

修改最大畫素值的可逆數字演算法的實現

designed by 李立宗 lilizong gmail.com t4311.m c imread e lena.bmp subplot 1,3,1 imshow c title 嵌入水印前影象 m,n size c dix zeros 255 for i 1 512 for j 1 512 f...

計算最大次大值的最優演算法

求最大,次大值,比較次數為 n log n 2 n 1 為求最大值的代價,log n 1 為求次大值的代價。public class submaxandmaxefficient void heapfindmax int e,int n 找最大值,放到array 1 for last 2 n 2 la...

最大值和次大值問題的最優演算法

輸入 n個數,最壞情況下用 n logn 2 次比較找出當中的最大值和次大值。解題思想 根據題意出現 logn 則肯定用到二分或者堆的思路,但是輸入的數沒有經過排序,而且題目要求的計算量也不允許排序。這樣,就肯定會用到類似堆的思路,但是直接構造堆等同於排序。堆的思想跟競標賽類似,都是父節點 子節點。...