Bonjour,
Je ne parviens pas à utiliser la fonction blockproc pour faire un calcul par blocs 8x8 sur une image 1920x1080.
J'ai une fonction simple appelée vqm2 :
J'utilise ensuite la fonction blockproc de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function [dy]=vqm2(im) % Color Tranfform %% r = im(:,:,1); g = im(:,:,2); b = im(:,:,3); [y,u,v]=rgb2yuv(r,g,b); %% DCT %% dy = dct2(y); %% Local Contrast %% DC = dy(1,1); LC = (dy * power( DC/1024, 0.65 )) / DC; %% SCSF %% Q = [8 16 19 22 26 27 29 34; 16 16 22 24 27 29 34 37; 19 22 26 27 29 34 34 38; 22 22 26 27 29 34 37 40; 22 26 27 29 32 35 40 48; 26 27 29 32 35 40 48 58; 26 27 29 34 38 46 56 69; 27 29 35 38 46 56 69 83]; dyq = dy.*Q;
Matlab me donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part B1 = blockproc(im1,[8 8],vqm2(im));
Il semble donc que la fonction vqm2 ne fonctionne pas avec blockproc, mais je ne comprend pas pourquoi. J'ai regardé ce qu'est une fonction handle sans plus de résultat...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ??? Error using ==> BLOCKPROC Argument 'Function' failed validation with error: Invalid block function. BLOCKPROC expects the user function, FUN, to be a valid function handle.
Merci d'avance pour votre aide
Partager