title: MATLAB image transformation
body: <p>The following code descripes the affine transformation of an image, I,</p>
  
  <pre><code>T = [sx, 0, 0;...
        0, sy, 0;...
        0, 0, 1];
  tform = maketform('affine', T);
  [J,cdata,rdata] = imtransform(I,tform);
  </code></pre>
  
  <p>After obtaining the transformed image, J, I want to find the appropriate pixel value of I(5,5) on image J.</p>
  
  <p>What should I do?</p>
  
  <p><img src="https://i.stack.imgur.com/w8oOv.png" alt="Enter image description here"></p>
  
  <p><img src="https://i.stack.imgur.com/DW5iK.png" alt="Enter image description here"></p>
  
  <p>My code is</p>
  
  <pre><code>function test()
      sx = 0.5; sy = 1;
      theta = pi/4;
      Ts = [sx, 0, 0;...
      0, sy, 0;...
      0, 0, 1];
      Tr = [cos(theta) -sin(theta) 0;...
            sin(theta) cos(theta), 0; ...
            0, 0, 1];
      T = Ts*Tr;
  
      I = imread('image_0002.jpg');
      tform = maketform('affine', T);
      [J,xdata,ydata] = imtransform(I,tform);
      h = ydata(2) - ydata(1);
      w = xdata(2) - xdata(1);
  
      %%
      gridOx = meshgrid(1:50:size(I,2), 1:50:size(I,1));
      gridOy = meshgrid(1:50:size(I,1), 1:50:size(I,2))';
      go = [gridOy(:), gridOx(:), ones(length(gridOx(:)),1)];
  
      for i=1:size(go,1)
          I = makept(I, go(i,1), go(i,2));
      end
      imshow(I);
  
      %%
      gt = T*go';
  
      TL = T*[1,1,1]';
      BL = T*[size(I,1), 1, 1]';
      TR = T*[1, size(I,2), 1]';
      BR = T*[size(I,1), size(I,2), 1]';
      minr = min([TL(1), TR(1), BL(1), BR(1)]);
      minc = min([TL(2), TR(2), BL(2), BR(2)]);
  
      %%
      gt = int32(round(gt));
      r = gt(1,:) - minr+1;
      c = gt(2,:) - minc+1;
  
      figure,hold on;
      for i=1:length(r)
          J = makept(J, r(i), c(i));
          plot(gt(1, i), gt(2, i));
      end
      figure, imshow(J);
  
      close all;
  end
  
  function I = makept(I, r, c)
      mr = max(r-2,1);
      mc = max(c-2,1);
      maxr = min(r+2,size(I,1));
      maxc = min(c+2,size(I,2));
  
      I(mr:maxr, mc:maxc,:) = 0;
      I(mr:maxr, mc:maxc,1) = 255;
  end
  </code></pre>