MATLAB: I get the error while trying to convert a matlab code to HDL code by Matlab HDL coder.. the error is ‘HDL Code generation does not support 2D-matrices as function inputs’..i’ll grateful if anyone solve this error..

logo watermarking; arnold transform; wavelet transformwatermarkingwatermarking; logo watermarking; arnold transform; wavelet transform

clc;
clear all;
close all;
image1=imread('cameraman.tif');
subplot(2,2,1);
figure(1);
imshow(image1);title('original image');
image2=stdfilt(image1);
subplot(2,2,2);
imshow(image2,[]);
title('standard deviation map');
t2=0.1*max(max(image2));
for i=1:256
for j=1:256
% c1(:,:,i)=cell2mat(C(i));
% p1(:,:,i)=cell2mat(P(i));
% sum1=sum(sum(c1(:,:,i)));
if image2(i,j) < t2
s(i,j)=0;
else
s(i,j)=1;
end
end
end
subplot(2,2,3);
imshow(s);
title('binarized standard deviation map');
%# desired number of horizontal/vertical tiles to divide the image into
numBlkH = 4;
numBlkW = 4;
%# compute size of each tile in pixels

[imgH,imgW,~] = size(s);
szBlkH = [repmat(fix(imgH/numBlkH),1,numBlkH-1) imgH-fix(imgH/numBlkH)*(numBlkH-1)];
szBlkW = [repmat(fix(imgW/numBlkW),1,numBlkW-1) imgW-fix(imgW/numBlkW)*(numBlkW-1)];
%# divide into tiles, and linearize using a row-major order

C = mat2cell(s, szBlkH, szBlkW)';
C = C(:);
%# display tiles i subplots

figure
for i=1:numBlkH*numBlkW
subplot(numBlkH,numBlkW,i), imshow( C{i} )
end
image1=imread('cameraman.tif');
numBlkH = 4;
numBlkW = 4;
%# compute size of each tile in pixels
[imgH,imgW,~] = size(image1);
szBlkH = [repmat(fix(imgH/numBlkH),1,numBlkH-1) imgH-fix(imgH/numBlkH)*(numBlkH-1)];
szBlkW = [repmat(fix(imgW/numBlkW),1,numBlkW-1) imgW-fix(imgW/numBlkW)*(numBlkW-1)];
%# divide into tiles, and linearize using a row-major order
P = mat2cell(image1, szBlkH, szBlkW)';
P = P(:);
%# display tiles i subplots
for i=1:numBlkH*numBlkW
subplot(numBlkH,numBlkW,i), imshow( P{i} )
end
figure
a=1;b=1;
for i=1:16
c1(:,:,i)=cell2mat(C(i));
p1(:,:,i)=cell2mat(P(i));
sum1=sum(sum(c1(:,:,i)));
t(:,:,i)=sum1/(64*64);
if t(:,:,i)< 0.5
poortext(:,:,a)=c1(:,:,i);
poortext1(:,:,a)=im2double(p1(:,:,i));
a=a+1;
else
text(:,:,b)=c1(:,:,i);
text1(:,:,b)=p1(:,:,i);
b=b+1;
end
end
for i=1:a-1
d=(poortext1(:,:,i));
subplot(4,4,i)
imshow(d);
title('poor-texture');
end
figure
for i=1:b-1
d1(:,:,i)=(text1(:,:,i));
d2=d1(:,:,i);
subplot(4,4,i)
imshow(d2);
title('texture');
end
% figure
k2=1;
for i=1:b-1
[ll,lh,hl,hh]=dwt2(d1(:,:,i), 'haar');
llc(:,:,k2)=(ll);
% subplot(2,2,1);
% imshow(llc);
% title('LL');
lhc(:,:,k2)=(lh);
% subplot(2,2,2);
% imshow(lhc);
% title('LH');
hlc(:,:,k2)=(hl);
% subplot(2,2,3);
% imshow(hlc);
% title('HL');
hhc(:,:,k2)=(hh);
% subplot(2,2,4);
% imshow(hhc);
% title('HH');
% figure
k2=k2+1;
end
figure
imag1 = imread('peppers.png');imag2=rgb2gray(imag1);
imag3= imresize(imag2, [64, 64]);
imshow(imag3);
figure
ima=arnold(imag3,24);
imshow(mat2gray(ima));

Best Answer

You cannot generate HDL for that code. HDL does not have "clear" or "imread" or any plotting of any form.