Advertisement
extesser

glorified pixelator

Apr 25th, 2013
1,281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.08 KB | None | 0 0
  1. function color_average(image,diameter,type,thresh)
  2. %% image is the name of the file 'image.format'
  3. %% diameter is the cell size
  4. %% type: either 'circle' or 'square'
  5. %% thresh: from 0 to 1. Size of the gap between cells
  6.  
  7. [colormat,~,~] = imread(image);
  8. [x,y,z] = size(colormat);
  9.  
  10. rows = floor(x/diameter);
  11. columns = floor(y/diameter);
  12. out = zeros(rows,columns,3);
  13.  
  14.  
  15. pre_image = ones(rows*diameter,columns*diameter,z);
  16. for i = 1:rows
  17.     for j = 1:columns
  18.        
  19.         r = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,1)));
  20.         g = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,2)));
  21.         b = mean(mean(colormat((i-1)*diameter+1:i*diameter,(j-1)*diameter+1:j*diameter,3)));
  22.        
  23.         midavgx = (i-1)*diameter+1 + diameter/2;
  24.         midavgy = (j-1)*diameter+1 + diameter/2;
  25.        
  26.         if strcmpi(type,'circle')
  27.             for I = (i-1)*diameter+1:i*diameter
  28.                 for J = (j-1)*diameter+1:j*diameter
  29.                    
  30.                     if sqrt(abs(I-midavgx)^2 + abs(J-midavgy)^2) < thresh/2*diameter
  31.                         I;
  32.                         J;
  33.                         pre_image(I,J,1) = r/255;
  34.                         pre_image(I,J,2) = g/255;
  35.                         pre_image(I,J,3) = b/255;
  36.                     end
  37.                 end
  38.             end
  39.         elseif strcmpi(type,'square')
  40.             for I = (i-1)*diameter+1:i*diameter
  41.                 for J = (j-1)*diameter+1:j*diameter
  42.                     if (abs(I-midavgx) < thresh/2*diameter) && (abs(J-midavgy) < thresh/2*diameter)
  43.                         pre_image(I,J,1) = r/255;
  44.                         pre_image(I,J,2) = g/255;
  45.                         pre_image(I,J,3) = b/255;
  46.                        
  47.                     end
  48.                 end
  49.             end
  50.         end
  51.             out(i,j,1) = round(r);
  52.             out(i,j,2) = round(g);
  53.             out(i,j,3) = round(b);
  54.            
  55.            
  56.         end
  57.     end
  58.    
  59.     imshow(pre_image)
  60.     imwrite(pre_image,'output.png','png');
  61. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement