File size: 2,989 Bytes
62615d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
function output=fun_transform_data_rgbfeatures(img_data,param)
%
%img_data=data_load.data;
output.transformed_image=[];
output.mnsv=[];
output.maxsv=[];
output.ipvsz=[];

image_size=param.image_size;
img_x_dim=image_size(1);
img_y_dim=image_size(1);

compute_decimal_place=param.compute_decimal_place;
feature_RGB=param.feature_RGB;
[nmb_of_colors,~]=size(feature_RGB);

[data_size,~]=size(img_data);
reshaped_images=zeros(data_size,img_x_dim,img_y_dim,3);
for m=1:data_size
    aa=double(img_data(m,:));
    reshaped_images(m,:,:,:)=reshape(aa,img_x_dim,img_y_dim,3);
end

if param.dwnsz_on==1
    x_trim=param.x_trim;
    y_trim=param.y_trim;
    downsizing=param.downsizing;
    x_dwnsz_dim=fix(img_x_dim/downsizing);
    y_dwnsz_dim=fix(img_y_dim/downsizing);

    ipvsz=(x_dwnsz_dim-2*x_trim)*(y_dwnsz_dim-2*y_trim);
    xsq=1:downsizing;
    ysq=1:downsizing;
    output.transformed_image=zeros(ipvsz,data_size,nmb_of_colors);
    output.mnsv=zeros(data_size,nmb_of_colors);
    output.maxsv=zeros(data_size,nmb_of_colors);
    output.ipvsz=ipvsz;

    temp_img=zeros(ipvsz,3);
    for m=1:data_size
        img=squeeze(reshaped_images(m,:,:,:));
        for color=1:3
            img1=squeeze(img(:,:,color));
            aa=zeros(ipvsz,1);
            for ii=(1+x_trim):(x_dwnsz_dim-x_trim)
                for jj=(1+y_trim):(y_dwnsz_dim-y_trim)
                    aa((jj-y_trim)+((ii-x_trim)-1)*(y_dwnsz_dim-2*y_trim),1)=mean(img1(xsq+2*(ii-1),ysq+2*(jj-1)),'all');
                end
            end
            temp_img(:,color)=aa;
        end
        for color=1:nmb_of_colors
            c1=feature_RGB(color,1);
            c2=feature_RGB(color,2);
            c3=feature_RGB(color,3);
            aa=c1*temp_img(:,1)+c2*temp_img(:,2)+c3*temp_img(:,3);
            mnsv=mean(aa);
            aa=aa-mnsv;
            maxsv=max(abs(aa));
            output.transformed_image(:,m,color)=round(aa/maxsv*10^compute_decimal_place)*10^(-compute_decimal_place);
            output.mnsv(m,color)=mnsv;
            output.maxsv(m,color)=maxsv;
        end
    end
else    
    temp_img=zeros(img_x_dim*img_y_dim,3);
    ipvsz=img_x_dim*img_y_dim;
    output.ipvsz=ipvsz;
    for m=1:data_size
        img=squeeze(reshaped_images(m,:,:,:));
        for color=1:3
            aa=img(:,:,color);
            aa=aa(:);
            temp_img(:,color)=aa;
        end
        for color=1:nmb_of_colors
            c1=feature_RGB(color,1);
            c2=feature_RGB(color,2);
            c3=feature_RGB(color,3);
            aa=c1*temp_img(:,1)+c2*temp_img(:,2)+c3*temp_img(:,3);
            mnsv=mean(aa);
            aa=aa-mnsv;
            maxsv=max(abs(aa));
            output.transformed_image(:,m,color)=round(aa/maxsv*10^compute_decimal_place)*10^(-compute_decimal_place);
            output.mnsv(m,color)=mnsv;
            output.maxsv(m,color)=maxsv;
        end             
    end    
end
if data_size==1
    output.transformed_image=squeeze(output.transformed_image);
end
end