[45] | 1 | % scale the intensities of the cells by looking at all cells in one |
---|
| 2 | % image |
---|
| 3 | load cells; |
---|
| 4 | |
---|
| 5 | % train data: |
---|
| 6 | I = cell2mat(x(:,3)); |
---|
| 7 | for i=1:length(Itrain) % over all train images |
---|
| 8 | R=[]; G=[]; B=[]; |
---|
| 9 | J = find(I==Itrain(i)); |
---|
| 10 | for j=1:length(J) |
---|
| 11 | msk = x{J(j),2}; |
---|
| 12 | % red: |
---|
| 13 | im = x{J(j),1}(:,:,1); |
---|
| 14 | pixs = im(msk); |
---|
| 15 | R = [R; pixs(:)]; |
---|
| 16 | % green: |
---|
| 17 | im = x{J(j),1}(:,:,2); |
---|
| 18 | pixs = im(msk); |
---|
| 19 | G = [G; pixs(:)]; |
---|
| 20 | % blue: |
---|
| 21 | im = x{J(j),1}(:,:,3); |
---|
| 22 | pixs = im(msk); |
---|
| 23 | B = [B; pixs(:)]; |
---|
| 24 | end |
---|
| 25 | % now find min and max: |
---|
| 26 | % red: |
---|
| 27 | mR = quantile(double(R),[0.001 0.999]); |
---|
| 28 | mG = quantile(double(G),[0.001 0.999]); |
---|
| 29 | mB = quantile(double(B),[0.001 0.999]); |
---|
| 30 | for j=1:length(J) |
---|
| 31 | im = double(x{J(j),1}); |
---|
| 32 | msk = double(x{J(j),2}); |
---|
| 33 | % red: |
---|
| 34 | imR = im(:,:,1).*msk-mR(1); |
---|
| 35 | if mR(2)>mR(1), imR = imR/(mR(2)-mR(1)); end |
---|
| 36 | mR(mR<0) = 0; mR(mR>1) = 1; |
---|
| 37 | % green: |
---|
| 38 | imG = im(:,:,2).*msk-mG(1); |
---|
| 39 | if mG(2)>mG(1), imG = imG/(mG(2)-mG(1)); end |
---|
| 40 | mG(mG<0) = 0; mG(mG>1) = 1; |
---|
| 41 | % blue: |
---|
| 42 | imB = im(:,:,3).*msk-mB(1); |
---|
| 43 | if mB(2)>mB(1), imB = imB/(mB(2)-mB(1)); end |
---|
| 44 | mB(mB<0) = 0; mB(mB>1) = 1; |
---|
| 45 | x{J(j),1} = cat(3,imR,imG,imB); |
---|
| 46 | end |
---|
| 47 | end |
---|
| 48 | |
---|
| 49 | % test data: |
---|
| 50 | I = cell2mat(z(:,3)); |
---|
| 51 | for i=1:length(Itest) % over all train images |
---|
| 52 | R=[]; G=[]; B=[]; |
---|
| 53 | J = find(I==Itest(i)); |
---|
| 54 | for j=1:length(J) |
---|
| 55 | msk = z{J(j),2}; |
---|
| 56 | % red: |
---|
| 57 | im = z{J(j),1}(:,:,1); |
---|
| 58 | pixs = im(msk); |
---|
| 59 | R = [R; pixs(:)]; |
---|
| 60 | % green: |
---|
| 61 | im = z{J(j),1}(:,:,2); |
---|
| 62 | pixs = im(msk); |
---|
| 63 | G = [G; pixs(:)]; |
---|
| 64 | % blue: |
---|
| 65 | im = z{J(j),1}(:,:,3); |
---|
| 66 | pixs = im(msk); |
---|
| 67 | B = [B; pixs(:)]; |
---|
| 68 | end |
---|
| 69 | % now find min and max: |
---|
| 70 | % red: |
---|
| 71 | mR = quantile(double(R),[0.001 0.999]); |
---|
| 72 | mG = quantile(double(G),[0.001 0.999]); |
---|
| 73 | mB = quantile(double(B),[0.001 0.999]); |
---|
| 74 | for j=1:length(J) |
---|
| 75 | im = double(z{J(j),1}); |
---|
| 76 | msk = double(z{J(j),2}); |
---|
| 77 | % red: |
---|
| 78 | imR = im(:,:,1).*msk-mR(1); |
---|
| 79 | if mR(2)>mR(1), imR = imR/(mR(2)-mR(1)); end |
---|
| 80 | mR(mR<0) = 0; mR(mR>1) = 1; |
---|
| 81 | % green: |
---|
| 82 | imG = im(:,:,2).*msk-mG(1); |
---|
| 83 | if mG(2)>mG(1), imG = imG/(mG(2)-mG(1)); end |
---|
| 84 | mG(mG<0) = 0; mG(mG>1) = 1; |
---|
| 85 | % blue: |
---|
| 86 | imB = im(:,:,3).*msk-mB(1); |
---|
| 87 | if mB(2)>mB(1), imB = imB/(mB(2)-mB(1)); end |
---|
| 88 | mB(mB<0) = 0; mB(mB>1) = 1; |
---|
| 89 | z{J(j),1} = cat(3,imR,imG,imB); |
---|
| 90 | end |
---|
| 91 | end |
---|
| 92 | |
---|
| 93 | save cellscaled x z Itrain Itest; |
---|
| 94 | |
---|