Per quanto riguarda il primo esercizio, la prima soluzione mi sembra corretta; la seconda, sinceramente non ho capito cosa intendi fare.
Se si tratta di scrivere esplicitamente dei loop, invece di usare le caratteristiche di indexing di MatLab (come nella prima soluzione), si possono scrivere tre cicli for annidati che scorrano le rige e le colonne delle tre matrici, qualcosa del tipo:
for i=1:size(original,1)
for j=1:size(original,2)
for k=1:size(original,3)
updated(i,j,k)=255-original(i,j,k);
end
end
end
Per quanto riguarda il secondo esercizio (se l'ho compreso correttamente):
[*] l'immagine RGB letta da imread viene caricata in una matrice (n x m x 3).
[*] data la matrice "original" letta con imread, per calcolare la media dei tre canali pupi provare con:
mean(mean(original(:,:,1)))
...
...
La matrice della nuova immagine dovrebbe quindi essere:
updated(:,:,1)=original(:,:,1)-mean(mean(original(:,:,1)));
updated(:,:,2)=original(:,:,2)-mean(mean(original(:,:,2)));
updated(:,:,3)=original(:,:,1)-mean(mean(original(:,:,3)));
Se si vogliono utilizzare dei loop, si può procedere come nel caso precedente.