您现在的位置:首页 >> 图像处理 >> 内容

m基于合成指纹的数字信息隐藏和提取matlab仿真

时间:2023/6/11 0:02:54 点击:

  核心提示:09_058_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJqUmJdx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

        随着互联网和数字化技术的快速发展,数字信息的保护和安全已经成为了一个严峻的问题。数字信息隐藏技术是一种将敏感信息嵌入到其他无关信息中的技术,以此来保护信息的安全。其中,基于合成指纹的数字信息隐藏技术是一种基于图像的信息隐藏技术,即将数字信息嵌入到指纹图像中。将详细介绍基于合成指纹的数字信息隐藏和提取技术,主要内容包括:数字信息隐藏的背景和意义、合成指纹的基本原理、数字信息嵌入和提取的具体方法、实验结果和分析等。

4.部分源码

.............................................................................

 

Rs_Encoder   = fec.rsenc(7,4);

Rs_Decoder   = fec.rsdec(Rs_Encoder);

Msg_Enc      = encode(Rs_Encoder,message0');

message      = [Msg_Enc',0,0];

 

 

%%

I=imread('1.jpg');

[R,C,K] = size(I);

if K == 3

   I = rgb2gray(I);

else

   I = I;

end

 

%%

%提取连续的相位从一个真实的指纹图片中提取

I_tmp = I;

figure;

subplot(121);

imshow(I);

 

%图像预处理,去噪滤波

I = medfilt2(I,[3,3]);%进行中值滤波;

%背景分割

%图像二值化处理

%首先进行归一化

I=norms(I,120,600);  

 

Ker   = 8;

[m,n] = size(I);

m1    = m/Ker;

n1    = n/Ker;

for i=1:m1

   for j=1:n1

       %设定门限

      t=mean2(I((i-1)*Ker+1:(i-1)*Ker+Ker,(j-1)*Ker+1:(j-1)*Ker+Ker));

      for k=(i-1)*Ker+1:(i-1)*Ker+Ker

          for l=(j-1)*Ker+1:(j-1)*Ker+Ker

              if I(k,l) < t

                  I(k,l)=1;

              else 

                  I(k,l)=0;

              end

          end

      end

   end

end

%异常点的处理

for i=1:m

    for j=1:n

        if I(i,j)>1

            I(i,j)=0;

        end

    end

end

for i=1:m

    for j=1:n

        if I(i,j)==1

            for k=1:j

                I(i,k)=1;

            end

            break;

        end

    end

end

for i=1:m

    for j=n:-1:1

        if I(i,j)==1

            for k=n:-1:j

               I(i,k)=1;

            end

            break;

   end

    end

end

for i=1:m

    for j=1:n

        if I(i,j)==1

            I(i,j)=0;

        else

            I(i,j)=1;

        end

    end

end

 

I=wiener2(I,[3 3]);

%以下为细化处理

[r,c] = size(I);

for i1=1:r;

    for j1=1:c

        if (I(i1,j1)==1)

           I(i1,j1)= 255; 

           I2      = I;

        end

    end

end

y         = thinning(I2);

A         = abs(double(y(2:end-1,2:end-1)));

B         = 32;

gamma     = 1; 

b         = 1; 

Theta     = 0; 

phi       = pi/4; 

shape     = 'valid';

F         = 0.3165; 

Lambda    = 1/F;

[GO, GF]  = gabor2(I, gamma, Lambda, b, Theta, phi, shape);

% GO        = func_theta(GO);

 

subplot(122);

imshow(GO,[]);

title('连续相位');

 

%%

%转换为多项式,用来产生螺旋相位

%CRC

LEN=8;

s = crc_add(message, 16);

 

 

%分组

s2= reshape(s,[4,LEN]);s2

%polynomial

for i = 1:LEN

    dat(1,i) = s2(1,i)*2^3 + s2(2,i)*2^2 + s2(3,i)*2^1 + s2(4,i)*2^0;

end

x1=[1:0.01:LEN];

p = polyfit([1:LEN],dat,LEN);

y1 = polyval(p,x1);

figure;

plot(1:8,dat,'-r>',...

    'LineWidth',1,...

    'MarkerSize',8,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

hold on

plot(x1,y1,'g','LineWidth',2);

 

%坐标映射,这里做简化

%产生螺旋相位公式6

[R,C] = size(GO);

xp = R*(1:LEN)/2;

yp = C*dat/6;

Pp = 2*mod(dat,2)-1;

 

 

fai   = zeros(R,C);

for i = 1:R

    for j = 1:C

        for k = 1:LEN

            fai(i,j)=fai(i,j)+Pp(k)*atan((j-yp(k))/(i-xp(k)));

        end

    end

end

 

figure;

subplot(131);

imshow(fai,[]);

title('螺旋相位');

%合成指纹

figureprint = A+B.*cos(GO+exp(fai));

 

subplot(132);

imshow(figureprint,[]);

title('合成指纹灰度图');

 

subplot(133);

imshow(im2bw(figureprint,0.9),[]);

title('合成指纹二进制图');

 

figureprint2 = figureprint + 20*randn(size(figureprint));

figure;

imshow(figureprint2,[]);

title('加入噪声');

%%

%这个地方做简化了, 

tmps = log(acos((figureprint-A)/B)-GO);

t1=polyval(p,1);%3

t2=polyval(p,2);%12

t3=polyval(p,3);%15

t4=polyval(p,4);%2

t5=polyval(p,5);%8

t6=polyval(p,6);%15

t7=polyval(p,7);%10

t8=polyval(p,8);%5

datr=round([t1,t2,t3,t4,t5,t6,t7,t8]);

data2=[];

for i = 1:length(datr)

    data = dec2bin(datr(i),4); 

    data2=[data2,str2num(data(1)),str2num(data(2)),str2num(data(3)),str2num(data(4))];

end

s3= data2;

[output_after_check, indicate] =crc_check(s3,16);

[Msg_Dec,cnumerr,ccode] = decode(Rs_Decoder,output_after_check(1:end-2)');

message0

Msg_Dec'

09_058_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168