【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(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
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用MATLAB进行高频强调滤波和直方图均衡化处理tif图像的方法和步骤如下: 1. 加载tif图像使用imread函数加载tif图像,如下所示: ```matlab img = imread('image.tif'); ``` 2. 高频强调滤波:使用高频强调滤波器,可以使用函数fspecial来设计一个高通滤波器,然后使用函数imfilter来进行滤波操作,如下所示: ```matlab % 设计高通滤波器 h = fspecial('unsharp'); % 对图像进行滤波操作 img_filtered = imfilter(img, h); ``` 在这里,使用了fspecial('unsharp')生成了一个unsharp掩膜,这个掩膜是一种高通滤波器,可以对图像进行高频强调滤波。另外,也可以根据实际需求自行设计高通滤波器。 3. 直方图均衡化:使用函数histeq可以对图像进行直方图均衡化处理,如下所示: ```matlab img_eq = histeq(img); ``` 在这里,直接对原始图像进行直方图均衡化处理,得到了均衡化后的图像img_eq。 4. 保存处理后的图像使用imwrite函数可以将处理后的图像保存为tif图像,如下所示: ```matlab imwrite(img_filtered, 'image_filtered.tif'); imwrite(img_eq, 'image_eq.tif'); ``` 分别保存了高频强调滤波处理后的图像直方图均衡化处理后的图像。 以上就是使用MATLAB进行高频强调滤波和直方图均衡化处理tif图像的方法和步骤。需要注意的是,在实际应用中需要根据具体的情况进行参数的调整和优化,以达到最佳的处理效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值