【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

使用四叉树分割和直方图移动的可逆图像数据隐藏技术旨在在图像中嵌入秘密信息而不损失图像质量,同时确保隐藏的数据可以完全提取回来。 四叉树是一种图像分割方法,将图像逐渐分割成四个象限,直到每个象限的像素满足特定的条件。在数据隐藏中,四叉树分割可用于确定嵌入秘密数据的位置,通常选择与秘密数据量相匹配的分辨率进行分割,以确保数据的正确嵌入和提取。 直方图是图像中像素强度值的分布统计图,直方图移动是一种可逆的图像处理技术,通过微调图像的直方图来嵌入秘密数据。在隐藏数据时,可以通过微调直方图中的像素强度值,将秘密数据嵌入到图像中,而在提取数据时,则通过相反的操作将数据提取出来。通过四叉树分割和直方图移动的可逆图像数据隐藏技术,可以在保持图像质量的同时实现隐秘信息的嵌入和提取,为图像安全通信和隐私保护提供了一种有效的解决方案。

📚2 运行结果

部分代码:

clc;
clear all;
close all;
z=1;

%--------------------reading the image------------------------
b=imread('goldhill.jpg');
I=rgb2gray(b);
figure(1);
imshow(I);
title('original image');
[m,n]=size(I);
figure(2);
imhist(I);
title('histogram of original image');

%--------------------quadtree decomposition---------------------

mindim=4;
S = qtdecomp(I,@Split,mindim,@Predicate);

%-------------------showing the block representation------------

blocks = repmat(uint8(0),size(S));

for dim = [512 256 128 64 32 16 8 4 2 1];    
  numblocks = length(find(S==dim));
      
  if (numblocks > 0)        
    values = repmat(uint8(1),[dim dim numblocks]);
    values(2:dim,2:dim,:) = 0;
    blocks = qtsetblk(blocks,S,dim,values);
  end
end

blocks(end,1:end) = 1;
blocks(1:end,end) = 1;

figure(3);
imshow(blocks,[]);
title('decomposed image blocks');


%-------------------showing fullimage-----------------------------------

vals1 = repmat(uint8(0),size(S));
for dim = [512 256 128 64 32 16 8 4 2 1]
    [vals,r,c]=qtgetblk(I,S,dim);
        
    numblocks = length(find(S==dim));    
   if (numblocks > 0)        
    values = repmat(uint8(1),[dim dim numblocks]);
    values(2:dim,2:dim,:) = vals(2:dim,2:dim,1:numblocks) ;
    
    vals1 = qtsetblk(vals1,S,dim,values);
  end
end
figure(4);
imshow(vals1,[]);
title('decomposed image');

%----------------inputting the message/data to be hide---------------------
hide_data=input('Enter the data to be hide'); %for manual input
%cell_data=textread('myfile.txt', '%s', 'whitespace', ''); %reading data from text file
%hide_data=char(cell_data);
bin_data=convert_binary(hide_data);  %calling function to convert data to binary
binary_data=bin_data';
size_binary=size(binary_data,1)*size(binary_data,2);
bin=1;
a=1;

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]沈瑜,严源,宋婧,等.基于并行轻量化卷积和多尺度融合的脑部磁共振图像配准[J/OL].生物医学工程学杂志:1-7[2024-04-16].http://kns.cnki.net/kcms/detail/51.1258.R.20240408.1406.002.html.

[2]陈艺琳,李超.基于多相水平集的多亮温太赫兹图像分割方法[J/OL].电波科学学报:1-7[2024-04-16].http://kns.cnki.net/kcms/detail/41.1185.TN.20240408.1841.003.html.

🌈4 Matlab代码实现

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值