如何把灰度图像分成8×8块和访问每一块单独应用dct2块

35视图(30天)
我想把灰度图像在我的例子中是“摄影师。tif”到8×8块然后运行dct2每一块
后来隐藏一个二进制水印图像到每一块。
到目前为止,我试着blockproc和许多其他的方法,但没有一个满足我的需求。
2的评论

登录置评。

接受的答案

Stephane Dauvillier
Stephane Dauvillier 2019年4月29日
编辑:Stephane Dauvillier 2019年4月29日
文件=“cameraman.tif”;
我= imread(文件);
imshow (im);
为了使用 blockproc 你必须使用一个函数,accpts blocksstructure,这就是为什么你需要使用这样的东西
imModified = blockproc (im, [8], @ (blkStruct) dct2 (blkStruct.data));
imshow (imModified)
我希望这回答了你的问题
2的评论
Stephane Dauvillier
Stephane Dauvillier 2019年4月29日
你有一个函数添加watermak吗?
假设你有你的函数
函数imageWithWatermak = myFunction (imageWithoutWatermark)
结束
然后你会做
blockproc (im, [8], @ myFunction (blkStruct) (blkStruct.data));

登录置评。

答案(1)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019年4月29日
编辑:KALYAN ACHARJYA 2019年4月29日
image1 = rgb2gray (imread (“test.jpg”));
(行投资银行部)= (image1)大小;
%垫使8 disible, im我这样行96投资200
% 96 alread被8整除,没有需要修改:12
%投资银行部200不需要修改:25
%,否则做零垫,需要行或投资,或两者兼而有之
结果= dct2 (image1 25 [12]);
%这个尺寸25[12]将在8×8块,每个块大小12 25
imshow(结果);
77. png
也有更简单的方法。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!