Maison >tutoriels informatiques >connaissances en informatique >Traitement de blocs d'images avec MATLAB
Laissez-moi d'abord vous expliquer une erreur : les blocs d'image 64*64 (chaque bloc fait 4*4) doivent être 256 blocs, et non 16 blocs.
Voici le programme
Supposons que A soit une matrice d'image 64*64
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B est la matrice que vous voulez, 16 lignes et 256 colonnes
%Voici les instructions
%La relation approximative est la suivante, en supposant que A=
%A1 A17 … A241
%A2 A18 … A242
%∶ ∶ ∶
%A16 A19 … A256
% (Chaque Ai ici est un bloc matriciel 4*4)
%Alors B=
%B1 B2 B3 … B256
%Chaque Bi est un vecteur colonne 16*1 correspondant à Ai
%
% signifie en supposant que Ai=
%a1 a5 a9 a13
%a2 a6 a10 a14
%a3 a7 a11 a15
%a4 a8 a12 a16
%
% Alors Bi=
%a1
%a2
%∶
%a16
Comment diviser une matrice en plusieurs matrices de dimensions égales dans MATLAB :
Utilisez la fonction reshape : Entrez : doc reshape dans la fenêtre de commande.
Présentation de MATLAB :
MATLAB est un logiciel mathématique commercial produit par la société américaine MathWorks. Il s'agit d'un langage informatique technique avancé et d'un environnement interactif utilisé pour le développement d'algorithmes, la visualisation de données, l'analyse de données et les calculs numériques.
MATLAB est une combinaison des deux mots matrice&laboratoire, qui signifie usine matricielle (laboratoire matriciel). Il s'agit d'un environnement informatique de haute technologie publié par la société américaine Mathworks, principalement destiné au calcul scientifique, à la visualisation et à la programmation interactive. Il intègre de nombreuses fonctions puissantes telles que l'analyse numérique, les calculs matriciels, la visualisation de données scientifiques, ainsi que la modélisation et la simulation de systèmes dynamiques non linéaires dans un environnement de fenêtre facile à utiliser, fournissant ainsi la recherche scientifique, la conception technique et de nombreux domaines scientifiques qui doivent être réalisés. calculs numériques efficaces. Le domaine fournit une solution complète et s'éloigne largement du mode d'édition des langages de programmation non interactifs traditionnels (tels que C et Fortran), représentant le niveau avancé des logiciels de calcul scientifique international d'aujourd'hui.
% Supposons que votre matrice d'origine existe dans la variable de
a=nchoosek(1:20,16);% génère 20 combinaisons différentes de 16, il y aura 4845 sortes et renvoie une matrice 4845x16
num=taille(a,1);%num=4845
choisir=true(num,1);
pour ii=1:num
temp=in(a(ii,:),:);% prend la combinaison de la ligne ii pour former la matrice carrée temporaire
d=det(temp);% calculer le déterminant
if d==0 % Si l'erreur de troncature est incluse dans le calcul, elle peut être jugée par la condition abs(d) choose(ii)=false ; % marque la combinaison dont le déterminant est 0 fin fin chooseout=a(choose,:);%chooseout est une matrice de nx16, n est le nombre de matrices qui remplissent les conditions % peut être utilisé out=in(chooseout(n,:),:) pour obtenir la nième matrice qui remplit les conditions
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!