tuttelikz

main_auto

Aug 29th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 12.37 KB | None | 0 0
  1. clear all; close all; clc;
  2. %% Input images information
  3. %addpath('C:\Users\TBL\Documents\MATLAB\Wrinkle Quantification\Skin_Demo\Single\Wrinkle_Detection\')
  4. %img = imread('bb _333.jpg');
  5. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\02_YJ\AF_backhand')
  6. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\07_EJ\AF_forearm')
  7. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\01_KB\AF_backhand')
  8. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\10_MR\AF_forearm')
  9. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\08_MA\forearm')
  10. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\06_HG\AF_forehead')
  11. %addpath()
  12. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\04_HG\AF_forehead')
  13. %addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\06_HG\forehead');
  14.  
  15.  
  16. addpath('C:\Users\TBL\Documents\MATLAB\1708_AMORE\10_MR\forehead')
  17. img = imread('Image0499.jpg');
  18. %img = imread('Image0499.jpg');
  19.  
  20. %img = rgb2gray(img);
  21. %imshow(img);
  22. [H,W] = size(img);
  23.  
  24. %% Parameters setup
  25. [lm,li] = max(img(5:H,51:W));
  26. minDepth = min(li)
  27. maxDepth = max(li)
  28. %%
  29.  
  30. diff = 20; %it was 2
  31. l_crop = 50;
  32. r_crop = 1;
  33. t_crop = 14+minDepth-0.75.*minDepth;
  34. b_crop = 0.75*(H-maxDepth);
  35. %b_crop = 2*minDepth;
  36. %%
  37. up = H-2;%443
  38. gsigma = 4;
  39. down = 222;
  40. % %% Preprocessing
  41. [img_crop,H_crop,W_crop] = crop(img,H,W,l_crop,r_crop,t_crop,b_crop);
  42. % imshow(img_crop)
  43. % imshow(img_crop)
  44. %%
  45. % figure()
  46. % imshow(img_crop);
  47. %%
  48.  
  49. %%
  50. [lm,li] = max(img_crop(:,1))
  51. [rm,ri] = max(img_crop(:,W_crop))
  52.  
  53. rotDeg = atand((ri-li)/W_crop);
  54. img_crop = imrotate(img_crop,rotDeg);
  55. [H,W] = size(img_crop);
  56. %%
  57. % figure()
  58. % imshow(img_crop);
  59.  
  60.  
  61.  
  62. % Case this is rotated to left side
  63. [row,col] = find(img_crop);
  64. maxRow = max(row);
  65. minRow = min(row);
  66. colLeft = find(img_crop(maxRow,:));
  67.  
  68. cLeft = max(colLeft)
  69. rLeft = max(img_crop(:,cLeft)) - 30;
  70.  
  71.  
  72. %cRight = W-cLeft
  73. %%
  74.  
  75. %rRight = H-rLeft
  76.  
  77. %cLeft = 152;
  78. %rLeft = 126;
  79.  
  80.  
  81. [img_crop,H_crop,W_crop] = crop(img_crop,H,W,cLeft,cLeft,rLeft,rLeft);
  82. %colRight = find(img_crop(minRow,:));
  83. %figure()
  84. %imshow(img_crop)
  85.  
  86. %img_crop = double(img_crop);
  87. img_filt = imgaussfilt(img_crop,gsigma);
  88. %%
  89.  
  90. %%
  91. diff = 1;
  92. img_diff = filt_diff(img_filt,H_crop,W_crop,diff);
  93. up = H_crop-2;
  94. [img_line_surf,ind_line_surf,avg_index,ref_line,line1] = line_surf3(img_diff,H_crop,W_crop,diff,up,down);
  95.  
  96.  
  97.  
  98. for i = 1:W_crop
  99.   img_crop(1:line1(i),i) = 0;  
  100. end
  101.  
  102. img_filt = imgaussfilt(img_crop,gsigma);
  103.  
  104.  
  105. [H,W] = size(img_crop);
  106. diff = 2;
  107. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  108. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  109.  
  110. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  111.  
  112. med = 80;
  113. %img_med = imgaussfilt(img_crop,gsigma);
  114. img_med = padarray(img_filt',med,'replicate','both');
  115. img_med = padarray(img_med',med,'replicate','both');
  116. img_med = medfilt2(img_med,[med*2 med*2]);
  117. img_med = img_med([med+1:H+med],[med+1:W+med]);
  118. img_filt1 = zeros(H+diff,W);
  119. img_filt2 = zeros(H+diff,W);
  120.  
  121. img_filt1([diff+1:H+diff],:) = img_med;
  122. img_filt2([1:H],[1:W]) = img_med;
  123.  
  124. %%
  125. img_med = img_filt1 - img_filt2;
  126. img_med = img_med([diff+1:H+diff],:);
  127. %%
  128.  
  129. %%
  130. % figure();
  131. % imshow(img_med,[]);
  132. [H,W] = size(img_crop);
  133. img_line2 = zeros(H,W);
  134. %diff = 10;
  135. for i = 1:W
  136.     [local_max,local_index] = min(img_med(:,i));
  137.     img_line2(local_index,i) = 255; %+2 %-10    ubrat -diff
  138.     line2(i) = local_index; %brat -diff
  139. end
  140. %%
  141. % figure()
  142. % imshow(img_line2,[])
  143. %%
  144.  
  145. figure(1)
  146. imshow(img_crop,[])
  147. hold on
  148. plot(line1);
  149. plot(line2);
  150. hold off
  151.  
  152.  
  153. %%
  154. figure(2)
  155. imshow(img_crop,[])
  156. hold on
  157. plot(line2);
  158. hold off
  159.  
  160.  
  161.  
  162. %% Roughness
  163.  
  164. [peak_height,valley_depth] = peak_valley(line1,line2,W);
  165. [avg_rough,rms_rough,max_rough,total_rough] = roughness(peak_height,valley_depth)
  166.  
  167.  
  168.  
  169. %% Visualization
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220. %someIm = img_crop(maxRow,:);
  221. %[row,col] = find(img_crop());
  222. % ind1 = img_crop(maxRow,1) != 0;
  223. % %ind1 = A(maxRow,:) == 1;
  224. % A1 = img_crop(ind1,:);
  225. %}
  226.  
  227.  
  228. %%
  229. %{
  230. figure()
  231. imshow(img_crop);
  232. figure()
  233. imshow(rotImg);
  234. %{
  235. %img_crop = double(img_crop);
  236. img_filt = imgaussfilt(img_crop,8);
  237. %%
  238. %imshow(img_filt)
  239.  
  240. %%
  241. % %% Wrinkle surface
  242. img_diff = filt_diff(img_filt,H_crop,W_crop,diff);
  243. [img_line_surf,ind_line_surf,avg_index,ref_line,line1] = line_surf3(img_diff,H_crop,W_crop,diff,up,down);
  244.  
  245. %%
  246. [lm,li] = max(img_crop(:,1))
  247. [rm,ri] = max(img_crop(:,W_crop))
  248.  
  249. rotDeg = atand((ri-li)/W_crop);
  250. rotImg = imrotate(img_crop,rotDeg);
  251. %%
  252.  
  253. %%
  254. %{
  255. figure()
  256. imshow(img_crop);
  257. figure()
  258. imshow(rotImg);
  259. %}
  260. %%
  261.  
  262. l_crop2 = 20;
  263. r_crop2 = 20;
  264. t_crop2 = 200;
  265. b_crop2 = 10;
  266.  
  267. % %% Preprocessing
  268. [img_crop2,H_2,W_2] = crop(rotImg,H_crop,W_crop,l_crop2,r_crop2,t_crop2,b_crop2);
  269.  
  270. %%
  271. figure()
  272. imshow(img_crop2);
  273.  
  274. %%
  275.  
  276.  
  277. %}
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371. %%
  372.  
  373. %figure()
  374. %imshow(img_filt,[]);
  375. %figure();
  376. %imshow(im,[]);
  377.  
  378.  
  379. % figure();
  380. % imshow(img_filt);
  381. % figure()
  382. % plot(I)
  383. % ylim([0 450])
  384.  
  385.  
  386.  
  387. %
  388. % % figure()
  389. % % imshow(img_filt)
  390. %
  391. %
  392. % % for i = 1:W
  393. % %     [M,I] = max(img_filt(:,i));
  394. % % end
  395. % [M,I] = max(img_filt);
  396. % minRow = min(I);
  397. %
  398. % for i = 1:W
  399. %     diffShift(i) = I(i)-minRow;
  400. %     lowLine1(i) = I(i)+100-diffShift(i);
  401. % end
  402. %
  403. %
  404. %
  405. % for i = 1:W
  406. %     img_filt_new([minRow:lowLine1(i)],i) = 255;
  407. %     %new_img_filt(:,:) = img_filt((I(i):I(i)+200),:);
  408. % end
  409. %
  410. % % imshow(img_filt_new);
  411. %
  412. %
  413. % im=zeros(443,970);
  414. % a=200;
  415. % b=100;
  416. % c = 200;
  417. % for i=1:size(im,2)
  418. %     j=443-I(i);
  419. %     im(a+1-c:(a+j-9),i)=img_filt(I(i)-c:(I(i)-10+j),i);
  420. % end
  421. %
  422. % figure();
  423. % imshow(im,[]);
  424. %
  425. % figure();
  426. % imshow(img_filt);
  427. % figure()
  428. % plot(I)
  429. % ylim([0 450])
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441. % im=zeros(1000,970);
  442. % a=100;
  443. % b=100;
  444. % for i=1:size(im,2)
  445. %     j=443-I(i);
  446. %     im(a+1:(a+j-9),i)=img_filt(I(i)-b:(I(i)-10+j-b),i);
  447. % end
  448. % figure();
  449. % imshow(im);
  450. %
  451. % figure();
  452. % imshow(img_filt);
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463. % %% Wrinkle surface
  464. % img_diff = filt_diff(img_filt,H_crop,W_crop,diff);
  465. % [img_line_surf,ind_line_surf,avg_index,ref_line,line1] = line_surf3(img_diff,H_crop,W_crop,diff,up,down);
  466. %
  467. % %%
  468. %
  469. % med = 80;
  470. % img_med = imgaussfilt(img_crop,gsigma);
  471. % img_med = padarray(img_med',med,'replicate','both');
  472. % img_med = padarray(img_med',med,'replicate','both');
  473. % img_med = medfilt2(img_med,[med*2 med*2]);
  474. % img_med = img_med([med+1:H+med],[med+1:W+med]);
  475. % img_filt1 = zeros(H+diff,W);
  476. % img_filt2 = zeros(H+diff,W);
  477. %
  478. % img_filt1([diff+1:H+diff],:) = img_med;
  479. % img_filt2([1:H],[1:W]) = img_med;
  480. %
  481. % img_med = img_filt1 - img_filt2;
  482. % img_med = img_med([diff+1:H+diff],:);
  483. % %%
  484. %
  485. % % figure();
  486. % % imshow(img_med,[]);
  487. %
  488. % img_line2 = zeros(H,W);
  489. % %diff = 10;
  490. % for i = 1:W
  491. %     [local_max,local_index] = max(img_med(:,i));
  492. %     img_line2(local_index-diff,i) = 255; %+2 %-10
  493. %     line2(i) = local_index-diff;
  494. % end
  495. % %%
  496. %
  497. %
  498. % for i = 1: W
  499. %     %if(line2(i)-line1(i) < 0)
  500. %         %img_wrinkle([line2(i):line1(i)],i,1) = 255;
  501. %         %img_wrinkle_only([line2(i):line1(i)],i,1) = 255;
  502. %     depth(i) = diff+line1(i) - line2(i);
  503. %     %end    
  504. % end
  505. %
  506. % maxDepth = max(depth);
  507. % colormap jet
  508. % cm = colormap % returns the current color map
  509. % %cm(1, :) = [1 1 1];
  510. % %colormap(cm)
  511. % %%          
  512. % for i = 1: W
  513. %     normDepth(i) = depth(i)/maxDepth;
  514. %     colorID = max(1, sum(normDepth(i) > [0:1/length(cm(:,1)):1]));
  515. %     myColor = cm(colorID, :); % returns your color
  516. %     depthColor(i,:,:,:) = myColor;
  517. % end    
  518. % img_wrinkle(:,:,1) = zeros(size(img_crop));
  519. % img_wrinkle(:,:,2) = zeros(size(img_crop));
  520. % img_wrinkle(:,:,3) = zeros(size(img_crop));
  521. %
  522. % %img_wrinkle_only = zeros(size(img_crop));
  523. % %%
  524. % for i = 1: W
  525. %     %if(depth(i) > 0)  %(line2(i)-line1(i) < 0)
  526. %         %img_wrinkle([line2(i):line1(i)],i,1) = 255;
  527. %     img_wrinkle([line2(i):line1(i)+diff],i,1) = depthColor(i,1);
  528. %     img_wrinkle([line2(i):line1(i)+diff],i,2) = depthColor(i,2);
  529. %     img_wrinkle([line2(i):line1(i)+diff],i,3) = depthColor(i,3);
  530. %
  531. % end
  532. %
  533. % minLine = min(line2);
  534. %
  535. % for i = 1:W
  536. %     diffShift(i) = line2(i)-minLine;
  537. %     newLine1(i) = line1(i)-diffShift(i);
  538. % end
  539. % maxLine = max(newLine1);
  540. %
  541. % for i = 1: W
  542. %     %if(depth(i) > 0)  %(line2(i)-line1(i) < 0)
  543. %         %img_wrinkle([line2(i):line1(i)],i,1) = 255;
  544. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,1) = depthColor(i,1);
  545. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,2) = depthColor(i,2);
  546. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,3) = depthColor(i,3);
  547. % %     img_wrinkle_new([line2(i):line1(i)+diff],i,2) = depthColor(i,2);
  548. % %     img_wrinkle_new([line2(i):line1(i)+diff],i,3) = depthColor(i,3);
  549. % end
  550. % figure()
  551. % imshow(img_wrinkle_new(minLine:maxLine+diff,:,:,:))
  552. % figure()
  553. % imshow(img_wrinkle)
  554. % hold on
  555. % plot(line2)
  556. % plot(line1+diff)
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568. % [row,col,v] = find(img_filt);
  569.  
  570. %%
  571. % %
  572. % minLine = min(row);
  573. %
  574. % for i = 1:W
  575. %     for j = 1:H
  576. %         diffShift(i,j) = img_filt(:,:)-minLine;
  577. %     end
  578. % end
  579. %
  580. % figure()
  581. % imshow(diffShift)
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593. % for i = 1:W
  594. %     diffShift(i) = line2(i)-minLine;
  595. %     newLine1(i) = line1(i)-diffShift(i);
  596. % end
  597. % maxLine = max(newLine1);
  598. %
  599. % for i = 1: W
  600. %     if(depth(i) > 0)  %(line2(i)-line1(i) < 0)
  601. %         img_wrinkle([line2(i):line1(i)],i,1) = 255;
  602. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,1) = depthColor(i,1);
  603. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,2) = depthColor(i,2);
  604. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,3) = depthColor(i,3);
  605. %     img_wrinkle_new([line2(i):line1(i)+diff],i,2) = depthColor(i,2);
  606. %     img_wrinkle_new([line2(i):line1(i)+diff],i,3) = depthColor(i,3);
  607. % end
  608. % figure()
  609. % imshow(img_wrinkle_new(minLine:maxLine+diff,:,:,:))
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621. % maxLine = max(newLine1);
  622. %
  623. % for i = 1: W
  624. %     %if(depth(i) > 0)  %(line2(i)-line1(i) < 0)
  625. %         %img_wrinkle([line2(i):line1(i)],i,1) = 255;
  626. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,1) = depthColor(i,1);
  627. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,2) = depthColor(i,2);
  628. %     img_wrinkle_new([minLine:newLine1(i)+diff],i,3) = depthColor(i,3);
  629. % %     img_wrinkle_new([line2(i):line1(i)+diff],i,2) = depthColor(i,2);
  630. % %     img_wrinkle_new([line2(i):line1(i)+diff],i,3) = depthColor(i,3);
  631. % end
  632.  
  633.  
  634.  
  635.  
  636.  
  637. %img_wrinkle_new = imcrop(img_wrinkle_new,[60 40 100 90]);
  638. %%
  639. % figure()
  640.  
  641. % hold on
  642. % plot(newLine2)
  643. % plot(mewLine1+diff)
  644. %
  645.  
  646.  
  647. %%
  648.  
  649.  
  650. %% Roughness
  651.  
  652. % [peak_height,valley_depth] = peak_valley(ind_line_surf,avg_index,W_crop);
  653. % [avg_rough,rms_rough,max_rough,total_rough] = roughness(peak_height,valley_depth);
  654. %% Visualization
  655. %% Wrinkle
  656. % r1 = img_crop;
  657. % g1 = r1;
  658. % b1 = r1;
  659. % r1(img_line_surf > 0) = 255;
  660. % g1(ref_line > 0) = 255; %%
  661. % b1(img_line_surf > 0) = 0;
  662. % figure('Name','Wrinkle')
  663. % imshow(cat(3,r1,g1,b1),[]);
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673. % figure();
  674. % imshow(img_med,[]);
  675.  
  676. %diff = 10;
  677. %end
  678.  
  679. %img_wrinkle(:,:,1) = img_crop;
  680. %img_wrinkle(:,:,2) = img_crop;
  681. %img_wrinkle(:,:,3) = img_crop;
  682.  
  683.  
  684. %img_wrinkle([line1(i):H],i,1) = 1;
  685. %img_wrinkle([line1(i):H],i,2) = 1;
  686. %img_wrinkle([line1(i):H],i,3) = 1;
  687.  
  688. % figure()
  689. % imshow(line2)
  690.  
  691. %figure(1)
  692. %imshow(img_line2)
  693. %figure(2)
  694. %imshow(img_line_surf)
  695.  
  696.  
  697. %figure(1)
  698. %imshow(img_line_surf)
  699. %figure(2)
  700. %imshow(img_line2)
  701.  
  702. %img_wrinkle(:,:,1) = img_crop;
  703. %img_wrinkle(:,:,2) = img_crop;
  704. %img_wrinkle(:,:,3) = img_crop;
  705. %img_wrinkle_only = zeros(size(img_crop));
  706. %depth = zeros(W);
  707.  
  708.  
  709. %figure()
  710.  
  711.  
  712. % figure()
  713. % imshow(img_line_surf)
  714. % figure()
  715. % imshow(img_crop)
  716. % hold on;
  717. % plot(line2)
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731. %colormap gray
  732. % for i = 1: Wz
  733. %     %if(line2(i)-line1(i) < 0)
  734. %         %img_wrinkle([line2(i):line1(i)],i,1) = 255;
  735. %     img_wrinkle([line1(i):H],i,1) = 1;
  736. %     img_wrinkle([line1(i):H],i,2) = 1;
  737. %     img_wrinkle([line1(i):H],i,3) = 1;
  738. %     %end    
  739. % end
  740.  
  741. % r1 = img_crop;
  742. % g1 = r1;
  743. % b1 = r1;
  744. % r1(img_line_surf > 0) = 255;
  745. % g1(ref_line > 0) = 255; %%
  746. % b1(img_line_surf > 0) = 0;
  747. % figure('Name','Wrinkle')
  748. % imshow(cat(3,r1,g1,b1),[]);
  749. %f = 0.568; % your float
  750.  
  751. %cm = colormap % returns the current color map
  752.  
  753. %colorID = max(1, sum(f > [0:1/length(cm(:,1)):1]));
  754.  
  755. %myColor = cm(colorID, :) % returns your color
  756.  
  757.  
  758.  
  759. %figure(1)
  760. %imshow(img_wrinkle,[])
  761.  
  762. %figure(4)
  763. %imshow(img_wrinkle_only,[])
  764.  
  765. %}
Add Comment
Please, Sign In to add comment