資源簡介
Matlab程序,基于半色調技術的圖像影藏算法,將小圖像影藏到大圖像的奇數行和列中,先進行線性變換,再使用半色調算法。
代碼片段和文件信息
clc;clear?all;close?all;%清屏
tt=imread(‘lena.png‘);
figure
imshow(tt);title(‘Original?Image‘);
tt=rgb2ycbcr(tt);%將RGB色彩值變換為YcbCr色彩空間(將RGB真彩色圖像轉化為YcbCr色彩空間中相等的圖像)
tt=tt(::1);%這三行分別是Ycbcr空間的ycbcr對應矩陣
tt=double(tt);
[NM]=size(tt);%?y對應矩陣大小
A=zeros(N+2M+2);%創建大小為(N+2M+2)的矩陣用來存放接下來二值化數據
A(2:N+12:M+1)=tt(1:N1:M);
b=zeros(N+2M+2);
%for?i=1:N
?%???for?j=1:M
??%??????b(i+1j+1)=tt(ij);
?%???end
%end
e=zeros(N+2M+2);
for?i=2:N+1
???for?j=2:M+1
?????????if?mod(i2)==0&&mod(j2)==0
?????????b(ij)?=?255*((A(ij)>127));%?
??????????e(ij)=A(ij)-b(ij);%誤差
????????
??????????A(ij+1)=A(ij+1)+7/16*e(ij);
??????????A(i+1j-1)=A(i+1j-1)+3/16*e(ij);
??????????A(i+1j)=?A(i+1j)+5/16*e(ij);
??????????A(i+1j+1)=?A(i+1j+1)+1/16*e(ij);
?????????end
???end
end
output=A(2:N+12:M+1);
output=(output>127)*255;
figure
imshow(output);title(‘Halftoned?Image‘);
W=imread(‘E1.bmp‘);
figure
imshow(W);title(‘Original?E‘);
W=rgb2ycbcr(W);%將RGB色彩值變換為YcbCr色彩空間(將RGB真彩色圖像轉化為YcbCr色彩空間中相等的圖像)
W=W(::1);%這三行分別是Ycbcr空間的ycbcr對應矩陣
W=double(W);
[nm]=size(W);%?y對應矩陣大小
A=zeros(n+2m+2);%創建大小為(N+2M+2)的矩陣用來存放接下來二值化數據
A(2:n+12:m+1)=W(1:n1:m);
b=zeros(n+2m+2);
%for?i=1:n
?%???for?j=1:m
??%??????b(i+1j+1)=7*W(ij)/8+256/16;
??%??end
%end
e=zeros(n+2m+2);
for?i=2:n+1
????for?j=2:m+1??????
????????b(ij)?=?255*((A(ij)>127));%?
????????e(ij)=A(ij)-b(ij);%誤差
????????
????????A(ij+1)=A(ij+1)+7/16*e(ij);
????????A(i+1j-1)=A(i+1j-1)+3/16*e(ij);
????????A(
- 上一篇:塊稀疏貝葉斯重構算法
- 下一篇:ToF三維點云重建
評論
共有 條評論