我正在嘗試編寫訪問圖像中每個塊的函數replace
,保留前2000個元素,並將剩餘的元素設置爲零。但每次我這樣做的時候,我發現這個錯誤消息:我的matlab代碼中的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
函數的代碼:
function features = replace(block)
for(i = 2000:length(block.data))
% set each element to 0
block.data(i) = 0
end
我的腳本使用replace
,dct2
和blockproc
:
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_struct'替換'block'並報告會發生什麼? –