list_image_files (train_dir, 'default', [], ImageFiles)train_samples := []
image_width := image_size[0]
image_height := image_size[1]
for Index := 0 to |ImageFiles|-1 by 1
image_path := ImageFiles[Index]
create_dict (sample_info)
set_dict_tuple (sample_info, 'image_id', Index)
set_dict_tuple (sample_info, 'anomaly_label', 'ok')
set_dict_tuple (sample_info, 'anomaly_label_id', 0)
read_image (Image, image_path)
convert_image_type (Image, Image, 'real')
if (Index < 1)
image_sum := Image
else
add_image (Image, image_sum, image_sum, 1, 0)
endif
endfor
sub_image (image_sum, image_sum, Imagezero, 1, |ImageFiles|)
div_image (image_sum, Imagezero, ImageResult, 1, 0)
count_channels (ImageResult, Channels)
* 初始化均值和方差列表
MeanValues := []
DeviationValues := []
if (Channels == 3)
* 处理彩色图像
decompose3(ImageResult, Image1, Image2, Image3)
else
Image1 := ImageResult
Image2 := ImageResult
Image3 := ImageResult
endif
gen_empty_obj (EmptyObject)
concat_obj (EmptyObject, Image1, EmptyObject)
concat_obj (EmptyObject, Image2, EmptyObject)
concat_obj (EmptyObject, Image3, EmptyObject)
* 计算每个通道的均值和标准差
for ChannelIndex := 1 to 3 by 1
select_obj (EmptyObject, ObjectSelected, ChannelIndex)
intensity(ObjectSelected, ObjectSelected, Mean, Deviation)
MeanValues := [MeanValues, Mean]
DeviationValues := [DeviationValues, Deviation]
endfor
create_dict (data_param)
set_dict_tuple (data_param, 'DeviationValues', DeviationValues)
set_dict_tuple (data_param, 'MeanValues', MeanValues)
for Index := 0 to |ImageFiles|-1 by 1
image_path := ImageFiles[Index]
create_dict (sample_info)
set_dict_tuple (sample_info, 'image_id', Index)
set_dict_tuple (sample_info, 'anomaly_label', 'ok')
set_dict_tuple (sample_info, 'anomaly_label_id', 0)
read_image (Image, image_path)
convert_image_type (Image, Image, 'real')
zoom_image_size (Image, Image, image_width, image_height, 'bilinear')
count_channels (Image, Channels)
if (Channels == 3)
* 处理彩色图像
decompose3(Image, Image1, Image2, Image3)
else
Image1 := Image
Image2 := Image
Image3 := Image
endif
gen_empty_obj (ImageScaled)
Scale1 := 1.0 / DeviationValues[0]
Shift1 := - Scale1 * MeanValues[0]
scale_image (Image1, ImageScaled1, Scale1, Shift1)
append_channel (ImageScaled, ImageScaled1, ImageScaled)
Scale2 := 1.0 / DeviationValues[1]
Shift2 := - Scale1 * MeanValues[1]
scale_image (Image2, ImageScaled2, Scale2, Shift2)
append_channel (ImageScaled, ImageScaled2, ImageScaled)
Scale3 := 1.0 / DeviationValues[2]
Shift3 := - Scale3 * MeanValues[2]
scale_image (Image3, ImageScaled3, Scale3, Shift3)
append_channel (ImageScaled, ImageScaled3, ImageScaled)
gen_empty_obj (ImagesScaled)
concat_obj (ImagesScaled, ImageScaled, ImagesScaled)
set_dict_object (ImagesScaled, sample_info, 'image')
train_samples :=[train_samples, sample_info]
endfor
return ()