Dobrý den, mám tu jeden dost závažný problém a nedaří se mi ho úspešně vyřešit. Pokouším se vytvořit zpětný postup pro tuhle metodu je to v jazyce c# ale vzhledem k tomu že je to na 90% podobný tak si myslím, že to ničemu nevadí
public void ImagePermutation() {
//3rd
//Preparing for shuffling
VP1=new byte[n];
VP2=new byte[n];
VP3 = new byte[n];
TP1 = new int[n];
TP2 = new int[n];
TP3 = new int[n];
SP = new byte[k,n];
SP1 = new byte[n];
SP2 = new byte[n];
SP3 = new byte[n];
for(int i = 0; i < 3*W*H; i++) {
if(i < W*H) {
VP1[i] = I2[i%W,i/W];
} else if (i < 2*W*H) {
int j = i - W*H;
VP2[j] = I2[i%W,i/W];
} else if (i < 3*W*H) {
int m = i - 2*W*H;
VP3[m] = I2[i%W,i/W];
}
}
for(int i = 0; i < n; i++) {
SP1[i] = VP1[i];
SP2[i] = VP2[i];
SP3[i] = VP3[i];
TP1[i] = TP2[i] = TP3[i] = i;
}
Array.Sort(SP1,TP1);
Array.Sort(SP2,TP2);
Array.Sort(SP3,TP3);
for(int i = 0; i < n; i++) {
SP[0,i] = SP1[i];
SP[1,i] = SP2[i];
SP[2,i] = SP3[i];
}
// 4th
//preparing Image
SPN = new byte[k,n];
SPN1 = new byte[W,H];
SPN2 = new byte[W,H];
SPN3 = new byte[W,H];
for(int i = 0; i < n; i++) {
SPN[0,i] = SP[0, TP1[i]];
SPN[1,i] = SP[1, TP2[i]];
SPN[2,i] = SP[2, TP3[i]];
}
for(int i = 0; i < n; i++) {
SPN1[(i%W),(i/W)] = SPN[0,i];
}
for(int i = 0; i < n; i++) {
SPN2[(i%W),(i/W)] = SPN[1,i];
}
for(int i = 0; i < n; i++) {
SPN3[(i%W),(i/W)] = SPN[2,i];
}
I3 = new byte[W,3*H];
for(int i = 0; i < W; i++) {
for(int j = 0; j < H; j++) {
I3[i, j] = SPN[0,j*W + i];
I3[i, j + H] = SPN[1,j*W + i];
I3[i, j + 2*H] = SPN[2,j*W + i];
}
}
}