Advertisement
Guest User

Untitled

a guest
Dec 1st, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.96 KB | None | 0 0
  1. function ann = my_nnmex(A, B)
  2. % function ann = my_nnmex(A, B,~, ~, ~, ~, ~, ~, ~, ~, ~,~,nnfield_prev)
  3. %function ann = nnmex(A, B, [algo='cpu'], [patch_w=7], [nn_iters=5], [rs_max=100000], [rs_min=1], [rs_ratio=0.5], [rs_iters=1.0], [cores=2], [bmask=NULL]...
  4. % [win_size=[INT_MAX INT_MAX]], [nnfield_prev=[]], [nnfield_prior=[]], [prior_winsize=[]], [knn=1], [scalerange=4])
  5. %      (Pass [] to leave a parameter at its default).
  6.  
  7. %ann = nnmex(res, img,  algo, [], [], [], [], [], [], cores, [], [], ann);
  8.  
  9. % ann size = B size
  10.  
  11. % BEGIN DEBUGGING CODE
  12. % clear;
  13. % clc;
  14. % close all;
  15. % tic
  16. % image = imread('SimakovFarmer.png');
  17. % imageLab = rgb2lab(image); % Convert the source and target Images
  18. % imageLab = double(imageLab)/255;
  19. % targetHeight = 35;
  20. % res = imresize(imageLab,[targetHeight,NaN]);
  21. % stage1 = res;
  22. % H = 35;
  23. % % disp('Retargeting at the coarsest scale:')
  24. %
  25. % W = 30;
  26. % fprintf('\nH=%d, W=%d\n',H,W);
  27. % stage2 = imresize(stage1,[H,W]);
  28. % A = stage2; % small image
  29. % B = res; % large image
  30.  
  31. % END DEBUGGING CODE
  32.  
  33.  
  34. sizeA = size(A);
  35. sizeB = size(B);
  36. w = 7;
  37. w1 = w-1;
  38. xALimit = sizeA(2) - w1;
  39. yALimit = sizeA(1) - w1;
  40. xBLimit = sizeB(2) - w1;
  41. yBLimit = sizeB(1) - w1;
  42. cost = zeros(yBLimit,xBLimit);
  43. ann = zeros(size(A));
  44. ann(:,:,3) = ones(sizeA(1),sizeA(2))*2147483647;
  45. % class(A)
  46. pause(0.01)
  47. % if (~ isa(A,'double'))
  48. %    A = double(A)/255;
  49. % end
  50. % maxA = max(A(:))
  51. % maxB = max(B(:))
  52. % class(A)
  53. % class(B)
  54. A255 = A*255;
  55. B255 = B*255;
  56.  
  57. % patchB_cache = cell(yALimit,xALimit);
  58. % for xB = 1:xBLimit
  59. %     for yB = 1:yBLimit
  60. %         patchB_cache{yB,xB}= B255(yB:yB+w1,xB:xB+w1);
  61. %     end
  62. % end
  63. % patchB_cache(yALimit,xALimit) = struct('patch',zeros(w,w));
  64. % patchB_cache(1:yALimit,1:xALimit) = struct('patch',zeros(w,w));
  65. patchB.p=zeros(w,w);
  66. patchB_array = repmat(patchB,yBLimit,xBLimit);
  67.  
  68. % patchB_cache(yALimit,xALimit)=struct();
  69. for xB = 1:xBLimit
  70.     for yB = 1:yBLimit
  71.           patchB_array(yB,xB).p = B255(yB:yB+w1,xB:xB+w1);
  72.     end
  73. end
  74. % tic
  75. for xA = 1:xALimit
  76. %     fprintf('xA=%d\n',xA)
  77.     disp(xA)
  78.     for yA = 1:yALimit
  79.        patchA = A255(yA:yA+w1,xA:xA+w1); % small image
  80.         for xB = 1:xBLimit
  81.             for yB = 1:yBLimit
  82. %                 patchB = B255(yB:yB+w1,xB:xB+w1); % large image
  83. %                 costM = (patchB - patchA).^2;  
  84. %                 patchB_array(yB,xB).p
  85.                 costM = (patchB_array(yB,xB).p - patchA).^2;
  86.                
  87.                 cost(yB,xB) = sum(costM(:));
  88.             end
  89.         end
  90.         [minVal,minLoc] = min(cost(:));
  91.         [locY,locX]=ind2sub(size(cost),minLoc);
  92.         ann(yA,xA,1)=locX - 1;
  93.         ann(yA,xA,2)=locY - 1;
  94.         ann(yA,xA,3)=minVal;
  95. %         ann(yA,xA,3)=(locY-yA)^2 + (locX - xA)^2;
  96. %         ann(yA,xA,3)= sum(costM(:))
  97. %         d = (patchB - patchA)
  98. %         ann(yA,xA,3)= d*d'
  99.     end
  100. end
  101. % toc
  102.  
  103. ann = int32(ann);
  104. % ann2 = nnmex(A, B, [], [], [], [], [], [], [], []);
  105. % whos ann
  106. % pause(0.01)
  107. % toc
  108. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement