イメージ内のすべてのブロックにアクセスする関数replace
を作成しようとしています。最初の2000要素を保持し、残りの要素をゼロに設定します。しかし、私はやるたびに、私はこのエラーメッセージを見つけること:私のMATLABコードのblockproc関数に何が問題になっていますか?
function features = replace(block)
for(i = 2000:length(block.data))
% set each element to 0
block.data(i) = 0
end
そしてreplace
を使用して私のスクリプト、dct2
とblockproc
:
Error using blockproc>parse_inputs (line 997)
Invalid block function. BLOCKPROC expects the user function, FUN, to be a valid function handle.
Error in blockproc (line 219)
[source,fun,options] = parse_inputs(source,block_size,fun,varargin{:});
Error in blk2 (line 6)
J3 = blockproc(I3,[8 8],'dct2',f);
をここreplace
関数のコードです
I3 = imread('process/13.jpg');
figure;
imshow(I3);
f = @(block)replace(block.data);
J3 = blockproc(I3,[8 8],'dct2',f);
figure
imshow(J3);
imshow(log(abs(J3)),[]), colormap(jet), colorbar
J3(abs(J3) < 5) = 0;
%B=J;
%B(1:1) = 0;
[M N]=size(J3);
fun3=zigzag(J3);
in4=izigzag(fun3,M,N);
f = @(block)replace(block.data);
J22 = blockproc(in4,[8 8],'idct2',f);
figure
imshow(J22,[0 255]);
figure
imshow(log(abs(J22)),[]), colormap(jet), colorbar
'block'を' block_struct'に置き換えて何が起こるか報告できますか? –