MATLAB: Integers can only be combined with integers of the same class, or scalar doubles.

mask

mask = 1-double(im2bw(gray, graythresh(gray)));
strel = [0 1 1 1 0; 1 1 1 1 1; 1 1 1 1 1; 1 1 1 1 1; 0 1 1 1 0];%structuring element
shadowavg_red = sum(sum(image(:,:,1).*shadow_core)) / sum(sum(shadow_core));

Best Answer

Whatever your shadow_core is, it is double precision, but your image variable is integer data type.
shadowavg_red = sum(sum(double(ImageArray(:,:,1)).*shadow_core)) / sum(sum(shadow_core));
or better yet,
mean(ImageArray(logical(shadow_core)))
Note the renaming of image to ImageArray. Using a variable named "image" always leads to problems.