function  [Objects] = f_imageAnalysis(Label, chHoechst, chMAP2, chTH, chSynuclein, PreviewPath, MetaTable)
    
    %vol(chHoechst, 0, 3000)% Hoechst
    %vol(chTH, 0, 1000)
    %vol(chMAP2, 0, 5000)
    %vol(chSynuclein, 0,1000)

    %% Segment Organoid
    chOrganoid = imlincomb(0.25, chHoechst, 0.25, chTH, 0.25, chSynuclein, 0.25, chMAP2); %vol(chOrganoid, 0, 4000)
    OrganoidMask = chOrganoid > 175;
    %OrganoidMask = Iris_KeepbiggestObct3D(OrganoidMask);

    
    OrganoidMask = bwareaopen(OrganoidMask, 1e2);
    OrganoidMask = imclose(OrganoidMask, strel('disk', 50));
    OrganoidMask = imclose(OrganoidMask, strel('sphere', 5));
    OrganoidMask = logical(imfill(OrganoidMask, 'holes')); % vol(OrganoidMask,0,1)
    
    OrganoidMask = bwareaopen(OrganoidMask, 1e6);
    
    %OrganoidMaskEroded = imerode(OrganoidMask, strel('disk', 250));
    %OrganoidMaskOuterRingCandidates = OrganoidMask & ~OrganoidMaskEroded; % imtool(max(OrganoidMaskOuterRingCandidates,[],3))
    %OrganoidMaskOuterRingObjects = regionprops('table', bwlabeln(OrganoidMaskOuterRingCandidates), {'Area', 'PixelIdxList'});
    %OrganoidMaskOuterRingObjects = OrganoidMaskOuterRingObjects(OrganoidMaskOuterRingObjects.Area > 5e6, :); % todo  > 1e7
    %OrganoidMaskOuterRing = f_Create_Mask_from_ObjectList_Pixel_IDX(OrganoidMaskOuterRingObjects, 'PixelIdxList', OrganoidMask); % imtool(max(OrganoidMaskOuterRing,[],3))
    %OrganoidMaskCurated = OrganoidMask & ~OrganoidMaskOuterRing; % vol(OrganoidMaskCurated,0,1)
    %% Segment Nuclei
    NucMask = medfilt3(chHoechst) > 300;
    NucMask = bwareaopen(NucMask, 300);
    %NucMask = NucMask & OrganoidMaskCurated; % vol(NucMask, 0,1)

    
    %% Segment TH
    ObjectsThisOrganoid = table();
    %% Intensity  TH
% % %     % detect intermediate filamentous structures
% % %     for p=1:size(chMap2, 3)
% % %         chMap2_FT(:,:,p) = f_LPF_by_FFT_Semra(double(chMap2(:,:,p)), 'Butterworth', [7,1000], 0);
% % %     end % vol(chMap2_FT, 0, 1000)
% % %     chMap2_FT = uint16(mat2gray(chMap2_FT).*(2^16)-1); % vol(chMap2_FT, 0, 20000)
% % %     Map2DoG = imfilter(chMap2, fspecial('gaussian', 105, 1) -  fspecial('gaussian', 105, 35), 'symmetric');
% % %     %vol(Map2DoG, 0, 1000)
% % %     Map2DoGMask = Map2DoG > 100;
% % %     %vol(Map2DoGMask, 0, 1)
% % %     chMap2FTMask = chMap2_FT > 2000; % vol(chMap2FTMask, 0,1)% 6500
% % %     Map2MaskGlobal = chMap2 > 0; % remove fft artefacts % vol(Map2MaskGlobal, 0,1)
% % %     Map2MaskBright = chMap2 > 3000; %vol(Map2MaskBright, 0,1) % segment obvious bright structures
% % %     %Map2Mask = (Map2MaskGlobal & chMap2FTMask) | Map2MaskBright;%vol(Map2Mask, 0,1)
% % %     Map2Mask = (Map2MaskGlobal & chMap2FTMask & Map2DoGMask) | Map2MaskBright;%vol(Map2Mask, 0,1)
% % %     Map2Mask = bwareaopen(Map2Mask, 500);
% % %     
% % % 
% % %     Map2Mask = Map2Mask & OrganoidMaskCurated;% vol(Map2Mask, 0,1) % imtool(max(Map2Mask,[],3),[])

    %%%%%%%%%%%%%%%%%%%%%%%%%
    THDoG = imfilter(chTH, fspecial('gaussian', 105, 1) -  fspecial('gaussian', 105, 35), 'symmetric');
    THDoGMask = THDoG > 100;
    THMask =  THDoGMask;
    THMask = bwareaopen(THMask, 75); %vol(THMask, 0,1)
    %%%%%%%%%%%%%%%%%%%%%%%%%
    
    %% Segment MAP2
    % Please exclude autofluoresc. and check if spots are synapses (i.e. flip 2ndary ABs)
    
    MAP2Mask = chMAP2 > 1750; % vol(MAP2Mask)
    MAP2Mask = bwareaopen(MAP2Mask, 75);
    %MAP2Mask = MAP2Mask & OrganoidMaskCurated;
    
    %% Segment Synuclein
    % Please exclude autofluoresc. 
    
    SNCAMask = chSynuclein > 750; % vol(SNCAMask)
    SNCAMask = bwareaopen(SNCAMask, 75);
    %SNCAMask = SNCAMask & OrganoidMaskCurated;
 
    %% Feature extraction
    Objects = table();
    Objects.OrganoidIdx = MetaTable.Idx;
    Objects.Well = MetaTable.Well;
    Objects.AreaName = MetaTable.AreaName;
    Objects.OrganoidID = MetaTable.OrganoidID;
    
    % Volumes in voxels
    Objects.NucArea = sum(NucMask(:));
    Objects.THArea = sum(THMask(:));
    Objects.SNCAArea = sum(SNCAMask(:));
    Objects.MAP2Area = sum(MAP2Mask(:));
    Objects.OrganoidVolume = sum(OrganoidMask(:));
    
    % Normalized voxel/voxel
    %Objects.OrganoidVolumeCurated = sum(OrganoidMaskCurated(:));
    Objects.THVoxelsByNucVoxels = Objects.THArea / Objects.NucArea;
    Objects.SNCAVoxelsByNucVoxels = Objects.SNCAArea / Objects.NucArea;
    Objects.SNCAVoxelsByTHVoxels = Objects.SNCAArea / Objects.THArea;
    Objects.MAP2VoxelsByNucVoxels = Objects.MAP2Area / Objects.NucArea;
    Objects.THVoxelsByMAP2Voxels = Objects.THArea / Objects.MAP2Area;
    Objects.SNCAVoxelsByMAP2Voxels = Objects.SNCAArea / Objects.MAP2Area;
    
    
    % means in ROIs
    Objects.MeanSNCAIntensityInOrganoidVoxels = mean(chSynuclein(OrganoidMask));
    Objects.MeanSNCAIntensityInNucVoxels = mean(chSynuclein(NucMask));
    Objects.MeanSNCAIntensityInTHVoxels = mean(chSynuclein(THMask));
    Objects.MeanTHIntensityInMAP2Voxels = mean(chTH(MAP2Mask));
    Objects.MeanSNCAIntensityInMAP2Voxels = mean(chSynuclein(MAP2Mask));
    

  
    %% Previews 
    % Scalebar
    imSize = [size(chHoechst, 1), size(chHoechst, 2)];
    [BarMask, BarCenter] = f_barMask(200, 0.32393102760889064, imSize, imSize(1)-200, 200, 25);
    %it(BarMask)

    RGB = cat(3, imadjust(max(chMAP2, [], 3), [0 0.5], [0 1]), imadjust(max(chSynuclein, [], 3), [0 0.04], [0 1]), imadjust(max(chTH, [], 3), [0 0.02], [0 1]));
    RGB = imoverlay2(RGB, BarMask, [1 1 1]);
    %imtool(RGB)
    
    RGB2 = cat(3, imadjust(max(chTH, [], 3), [0 0.02], [0 1]), imadjust(max(chSynuclein, [], 3), [0 0.04], [0 1]), imadjust(max(chHoechst, [], 3), [0 0.08], [0 1]));
    RGB2 = imoverlay2(RGB2, BarMask, [1 1 1]);
    %imtool(RGB2)
    
    %PreviewMap2 = imoverlay2(imadjust(max(chMap2,[],3), [0 0.5], [0 1]), bwperim(max(Map2Mask,[],3)), [1 0 0]);
    PreviewTH = f_imoverlayAlpha(imadjust(max(chTH,[],3), [0 0.02], [0 1]), max(THMask,[],3), [0 1 0], 0.1);
    PreviewTH = imoverlay2(PreviewTH, BarMask, [1 1 1]);
    %imtool(PreviewTH,[])
    
    PreviewNuc = f_imoverlayAlpha(imadjust(max(chHoechst,[],3), [0 0.08], [0 1]), max(NucMask,[],3), [0 0 1], 0.1);
    PreviewNuc = imoverlay2(PreviewNuc, BarMask, [1 1 1]);
    %imtool(PreviewNuc,[])

    PreviewSNCA = f_imoverlayAlpha(imadjust(max(chSynuclein,[],3), [0 0.04], [0 1]), max(SNCAMask,[],3), [1 1 0], 0.1);
    PreviewSNCA = imoverlay2(PreviewSNCA, BarMask, [1 1 1]);
    %imtool(PreviewSNCA,[])
    
    PreviewMAP2 = f_imoverlayAlpha(imadjust(max(chMAP2,[],3), [0 0.5], [0 1]), max(MAP2Mask,[],3), [0 1 1], 0.1);
    PreviewMAP2 = imoverlay2(PreviewMAP2, BarMask, [1 1 1]);
    %imtool(PreviewMAP2,[])

    PreviewOrganoid = f_imoverlayAlpha(imadjust(max(chTH,[],3), [0 0.02], [0 1]), max(OrganoidMask,[],3), [1 0 1], 0.05);
    %PreviewOrganoid = f_imoverlayAlpha(PreviewOrganoid, max(OrganoidMaskCurated,[],3), [0 1 0], 0.05);
    PreviewOrganoid = imoverlay2(PreviewOrganoid, BarMask, [1 1 1]);
    %imtool(PreviewOrganoid,[])

    %% Write Previews 
    IdentityString = ['PreviewOrganoid', '_', MetaTable.OrganoidID{:}];
    imwrite(RGB, [PreviewPath, filesep, IdentityString, '_RGBMAP2SYNTH.png'])
    imwrite(RGB2, [PreviewPath, filesep, IdentityString, '_RGB2THSYNNuc.png'])
    imwrite(PreviewTH, [PreviewPath, filesep, IdentityString, '_TH.png'])
    imwrite(PreviewNuc, [PreviewPath, filesep, IdentityString, '_Nuc.png'])
    imwrite(PreviewSNCA, [PreviewPath, filesep, IdentityString, '_SNCA.png'])
    imwrite(PreviewMAP2, [PreviewPath, filesep, IdentityString, '_MAP2.png'])
    imwrite(PreviewOrganoid, [PreviewPath, filesep, IdentityString, '_Organoid.png'])

end
