What is the problem with my code? please help me

1 次查看(过去 30 天)
function main()
clc
clear close all
global bimg m n k block varr;
m=1; n=0; k=1; block=0;
bimg=imread('p.tif');
varr=zeros(1,1024);
img=imread('pep.tif');
lab=rgb2lab(img);
l=lab(:,:,1);
a=lab(:,:,2);
b=lab(:,:,3);
img_block=blockproc(b,[16,16], @embedding, 'BorderSize', [1,1], 'Trimborder', true);
w_lab=cat(l,a,img_block);
w_img=lab2rgb(w_lab);
subplot(1,2,1); imshow(img); title('Original Image');
subplot(1,2,2); imshow(w_img); title('Watermarked Image');
imwrite(im2unit8(w_img), 'wimage.png');
save('emb.mat', 'varr');
psnr_val=psnr(img, im2unit8(w_img));
end
function [inv_randon]=embedding(block_struct)
data=block_struct.data;
theta=0:179;
randon_trans=randon(data, theta);
portion=randon_trans(5:6, 5:6);
[V,J]=jordan(portion);
global bimg m n k block varr;
block=block+1;
q=3;
det=25;
vmax=max(V(:));
bmodq=mod(block,q);
Q=(bmodq/(vmax*del))+(vamx*del);
q=1;
p=1;
for i=1:4
n=n+1;
if n==33
m=m+1;
n=1;
end
if q==3
q=1;
p=2;
end
if bimg(m,n)==1
V(p,q)=V(p,q)+Q;
else
V(p,q)=V(p,q)+bmodq;
end
varr(1,k)=V(p,q);
k=k+1;
q=q+1;
end
inv_jor=real(V*J/V);
randon_trans(5:6, 5:6)=inv_jor;
output_size=max(size(data));
inv_randon=irandon(randon_trans, theta, output_size);
end
  2 个评论
Rik
Rik 2019-9-24
Apart from the use of clc, clear, close all, and the use of global variables I don't immediately see the source of the problem. What line gives an error and what is the full error text?
SUBROTO KUNDU
SUBROTO KUNDU 2019-9-24
编辑:the cyclist 2019-9-24
Function BLOCKPROC encountered an error
while evaluating the user supplied
function handle, FUN.
The cause of the error was:
Undefined function 'randon' for input
arguments of type 'double'.
Error in testing>embedding (line 52)
randon_trans=randon(data, theta);
Error in blockprocFunDispatcher (line
13)
output_block =
fun(block_struct);
Error in blockprocInMemory (line 80)
[ul_output fun_nargout] =
blockprocFunDispatcher(fun,block_struct,...
Error in blockproc (line 236)
result_image =
blockprocInMemory(source,fun,options);
Error in testing (line 21)
img_block=blockproc(b,[16,16],
@embedding, 'BorderSize', [1,1],
'Trimborder', true);

请先登录,再进行评论。

回答(1 个)

Guillaume
Guillaume 2019-9-24
编辑:Guillaume 2019-9-24
Isn't the error message clear enough?
Undefined function 'randon' ...
Indeed, I'm not aware of a randon function in matlab. Maybe you've written you own function, in which case it must be on the path, but most likely you meant to call the radon (with only one n) function.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by