Matlab中块处理中的误差

Matlab中块处理中的误差,matlab,image-processing,Matlab,Image Processing,我正在尝试将dct和量化应用于像这样的8*8块 img = imread('frames/frm001.png'); ycbcr = rgb2ycbcr(img); y = ycbcr(:,:,1); func = @dct2; whos func; d1 = blkproc(y,[8 8],func); qmtx = [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 1

我正在尝试将dct和量化应用于像这样的8*8块

img = imread('frames/frm001.png');
ycbcr = rgb2ycbcr(img);


y = ycbcr(:,:,1);

func = @dct2;
whos func;

d1 = blkproc(y,[8 8],func);

qmtx =     [16 11 10 16 24 40 51 61; 
            12 12 14 19 26 58 60 55;
            14 13 16 24 40 57 69 56; 
            14 17 22 29 51 87 80 62;
            18 22 37 56 68 109 103 77;
            24 35 55 64 81 104 113 92;
            49 64 78 87 103 121 120 101;
            72 92 95 98 112 100 103 99];
d1 = ceil(d1);
whos d1;
c = @(block_struct) (block_struct.data) ./ qmtx;        
d2 = blkproc(d1,[8,8], c );
whos d2;
为此,我得到以下错误

尝试引用非结构数组的字段。 @(块结构)(块结构数据)中出错。/qmtx blkproc中的错误(第103行) firstBlock=feval(fun,x,params{:}); dct中的错误(第28行) d2=blkproc(d1[8,8],c)


可能出了什么问题?

我在期待量化矩阵…您确定您有一个名为
block_struct
的变量,并且它有一个名为
data
的字段吗?是的。它的内置matlabd1是一个矩阵,而不是一个结构。只需执行c=@(数据)(数据)。/qmtx;