Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function color_average(image,diameter,type,thresh)
- %% image is the name of the file 'image.format'
- %% diameter is the cell size
- %% type: either 'circle' or 'square'
- %% thresh: from 0 to 1. Size of the gap between cells
- [colormat,~,~] = imread(image);
- [x,y,z] = size(colormat);
- rows = floor(x/diameter);
- columns = floor(y/diameter);
- out = zeros(rows,columns,3);
- pre_image = ones(rows*diameter,columns*diameter,z);
- for i = 1:rows
- for j = 1:columns
- r = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,1)));
- g = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,2)));
- b = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,3)));
- midavgx = (i-1)*diameter+1 + diameter/2;
- midavgy = (j-1)*diameter+1 + diameter/2;
- if strcmpi(type,'circle')
- for I = (i-1)*diameter+1:i*diameter
- for J = (j-1)*diameter+1:j*diameter
- if sqrt(abs(I-midavgx)^2 + abs(J-midavgy)^2) < thresh/2*diameter
- I;
- J;
- pre_image(I,J,1) = r/255;
- pre_image(I,J,2) = g/255;
- pre_image(I,J,3) = b/255;
- end
- end
- end
- elseif strcmpi(type,'square')
- for I = (i-1)*diameter+1:i*diameter
- for J = (j-1)*diameter+1:j*diameter
- if (abs(I-midavgx) < thresh/2*diameter) && (abs(J-midavgy) < thresh/2*diameter)
- pre_image(I,J,1) = r/255;
- pre_image(I,J,2) = g/255;
- pre_image(I,J,3) = b/255;
- end
- end
- end
- end
- out(i,j,1) = round(r);
- out(i,j,2) = round(g);
- out(i,j,3) = round(b);
- end
- end
- imshow(pre_image)
- imwrite(pre_image,'output.png','png');
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement