What is the problem with my code? please help me

1 visualización (últimos 30 días)
SUBROTO KUNDU
SUBROTO KUNDU el 24 de Sept. de 2019
Editada: Guillaume el 24 de Sept. de 2019
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 comentarios
Rik
Rik el 24 de Sept. de 2019
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 el 24 de Sept. de 2019
Editada: the cyclist el 24 de Sept. de 2019
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);

Iniciar sesión para comentar.

Respuestas (1)

Guillaume
Guillaume el 24 de Sept. de 2019
Editada: Guillaume el 24 de Sept. de 2019
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.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by