tuttelikz

sideR1.m

Nov 30th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.86 KB | None | 0 0
  1. clear all; close all; clc;
  2.  
  3. addpath('C:\Users\iptea\Documents\MATLAB\Nonreplica September_ROUGHNESS\Roughness_Amore_Skin2017\AreaRoughness\General');
  4. data_pth = 'C:\Users\iptea\Documents\MATLAB\skin_data_171017';
  5. d = dir;
  6. d = d(~ismember({d.name},{'.','..'}));
  7. %%
  8. sbj = {'1','2','3','4','5'};
  9. part = {'y_cheek','o_cheek','y_eye','o_eye','y_forearm','o_forearm'};
  10. %%
  11. sht_tbl = 'side_refparam.xlsx';
  12. T = readtable(sht_tbl,'ReadRowNames',false);
  13. l_crop_list_o = T{1:15,6};
  14. gau1_list_o = T{1:15,7};
  15. med_list_o = T{1:15,8};
  16. gau2_list_o = T{1:15,9};
  17. l_crop_list_y = T{1:15,15};
  18. gau1_list_y = T{1:15,16};
  19. med_list_y = T{1:15,17};
  20. gau2_list_y = T{1:15,18};
  21.  
  22. med_arr = zeros(5,6);
  23. gsigma2_arr = zeros(5,6);
  24. l_crop_arr = zeros(5,6);
  25. gsigma1_arr = zeros(5,6);
  26.  
  27. %%
  28. l_crop_arr(:,1) = l_crop_list_y(1:5,1);
  29. l_crop_arr(:,2) = l_crop_list_o(1:5,1);
  30. l_crop_arr(:,3) = l_crop_list_y(6:10,1);
  31. l_crop_arr(:,4) = l_crop_list_o(6:10,1);
  32. l_crop_arr(:,5) = l_crop_list_y(11:15,1);
  33. l_crop_arr(:,6) = l_crop_list_o(11:15,1);
  34.  
  35. med_arr(:,1) = med_list_y(1:5,1);
  36. med_arr(:,2) = med_list_o(1:5,1);
  37. med_arr(:,3) = med_list_y(6:10,1);
  38. med_arr(:,4) = med_list_o(6:10,1);
  39. med_arr(:,5) = med_list_y(11:15,1);
  40. med_arr(:,6) = med_list_o(11:15,1);
  41.  
  42. gsigma1_arr(:,1) = gau1_list_y(1:5,1);
  43. gsigma1_arr(:,2) = gau1_list_o(1:5,1);
  44. gsigma1_arr(:,3) = gau1_list_y(6:10,1);
  45. gsigma1_arr(:,4) = gau1_list_o(6:10,1);
  46. gsigma1_arr(:,5) = gau1_list_y(11:15,1);
  47. gsigma1_arr(:,6) = gau1_list_o(11:15,1);
  48.  
  49. gsigma2_arr(:,1) = gau2_list_y(1:5,1);
  50. gsigma2_arr(:,2) = gau2_list_o(1:5,1);
  51. gsigma2_arr(:,3) = gau2_list_y(6:10,1);
  52. gsigma2_arr(:,4) = gau2_list_o(6:10,1);
  53. gsigma2_arr(:,5) = gau2_list_y(11:15,1);
  54. gsigma2_arr(:,6) = gau2_list_o(11:15,1);
  55. %%
  56. sht_name = 'rgh_side.xlsx';
  57. ttl = {'part','sbj','avg_rgh','rms_rgh','max_rgh'};
  58. ttl_rng1 = 'B1:F1';
  59. xlswrite(sht_name,ttl,ttl_rng1);
  60. %%
  61. ttl_rng2 = 'H1:L1';
  62. xlswrite(sht_name,ttl,ttl_rng2);
  63. %%
  64. max_no = 500;
  65. avg_rgh = zeros(1,max_no);
  66. rms_rgh = zeros(1,max_no);
  67. max_rgh = zeros(1,max_no);
  68. %%
  69. counter = 0;
  70. incr1 = 1;
  71. incr2 = 2;
  72.  
  73.  
  74. for part_no = 1:1 %length(part)
  75. for sbj_no = 1:1 %length(sbj)
  76. fld_pth = strcat(data_pth,'\',sbj{sbj_no},'\',part{part_no},'\');
  77. disp(fld_pth);
  78.  
  79. for img_no = 1:max_no
  80. img_name = strcat('Image',num2str(img_no-1,'%04d'),'.jpg');
  81. img = imread(strcat(fld_pth,img_name));
  82.  
  83. [H,W] = size(img);
  84.  
  85. t_crop = 20;
  86. r_crop = 55;
  87. b_crop = 500;
  88. %l_crop = 20;
  89. l_crop = l_crop_arr(sbj_no,part_no);
  90.  
  91. [img_crp,H,W] = crop(img,H,W,l_crop,r_crop,t_crop,b_crop);
  92.  
  93. img3d(:,:,img_no) = img_crp;
  94.  
  95. if mod(img_no,100) == 0
  96. fprintf('*');
  97. fprintf('%i\n', img_no);
  98. end
  99. end
  100.  
  101. [H,W,I] = size(img3d);
  102.  
  103. for img_no = 1:W
  104. fprintf('.');
  105. if mod(img_no,100) == 0
  106. fprintf('%i\n',img_no);
  107. end
  108.  
  109. avgSide = img3d(:,img_no,:);
  110. % avgSide = avgSide([20:H-400],:); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  111. avgSide2 = squeeze(avgSide);
  112. img = avgSide2;
  113. %read_file_name = strcat('Image',num2str(step-1,'%04d'),'.jpg');
  114.  
  115. [H,W] = size(img);
  116.  
  117. gsigma1 = gsigma1_arr(sbj_no,part_no);
  118. img_gau = imgaussfilt(img,gsigma1);
  119.  
  120. med = med_arr(sbj_no,part_no); %med_arr(sbj_no,part_no); %60
  121. diff_idl = 2;
  122. img_med = medfilt2(img_gau,[med*2 med*2],'symmetric');
  123. img_med = filt_diff(img_med,H,W,diff_idl);
  124. [img_idl,ind_idl,~] = find_srf(img_med,H,W);
  125.  
  126. % figure()
  127. % imshow(img,[])
  128. % hold on
  129. % h2 = plot(ind_idl);
  130. % set(h2,'LineWidth',2)
  131.  
  132. mrg = 60;
  133. [img_flt,H,W] = flatten(img,H,W,ind_idl,mrg);
  134.  
  135. gsigma2 = gsigma2_arr(sbj_no,part_no);
  136. img_gau = imgaussfilt(img_flt,gsigma2);
  137.  
  138. diff_rl = 2;
  139. img_diff = filt_diff(img_gau,H,W,diff_rl);
  140.  
  141. [img_rl,ind_rl,avg_rl] = find_srf(img_diff,H,W); %img_rl
  142.  
  143. % figure()
  144. % imshow(img_flt,[]);
  145. % hold on
  146. % h4 = plot(ind_rl);
  147. % set(h4,'LineWidth',2)
  148.  
  149.  
  150. % figure()
  151. % plot(ind_rl);
  152. % hold on
  153. % plot(avg_rl);
  154.  
  155. [avg_rgh(img_no),rms_rgh(img_no),max_rgh(img_no)] = rgh(avg_rl,ind_rl);
  156. end
  157.  
  158. mean_avg_rgh = mean(avg_rgh);
  159. mean_rms_rgh = mean(rms_rgh);
  160. mean_max_rgh = mean(max_rgh);
  161.  
  162. A = [part(1,part_no),sbj(1,sbj_no),num2str(mean_avg_rgh),num2str(mean_rms_rgh),...
  163. num2str(mean_max_rgh)];
  164.  
  165.  
  166.  
  167. if mod(part_no,2) == 1
  168. rw_bef = part_no - incr1;
  169. vrbl_rng = strcat('B',num2str(rw_bef*5+sbj_no+1),':','F',num2str(rw_bef*5+sbj_no+1));
  170. else
  171. rw_aft = part_no - incr2;
  172. vrbl_rng = strcat('H',num2str(rw_aft*5+sbj_no+1),':','L',num2str(rw_aft*5+sbj_no+1));
  173. end
  174.  
  175. xlswrite(sht_name,A,vrbl_rng);
  176. counter = counter + 1;
  177. fprintf('\n%i out of %i\n', counter, length(part)*length(sbj));
  178.  
  179. end
  180.  
  181. if mod(part_no,2) == 1
  182. incr1 = incr1 + 1;
  183. else
  184. incr2 = incr2 + 1;
  185. end
  186. end
  187.  
  188. fprintf('Process finished.\n');
  189.  
  190.  
  191. % for img_no = 1:W
  192. % fprintf('.');
  193. % if mod(img_no,100) == 0
  194. % fprintf('%i\n',img_no);
  195. % end
  196. %
  197. % avgSide = img3d(:,img_no,:);
  198. % % avgSide = avgSide([20:H-400],:); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  199. % avgSide2 = squeeze(avgSide);
  200. % img = avgSide2;
  201. %
  202. % %read_file_name = strcat('Image',num2str(step-1,'%04d'),'.jpg');
  203. %
  204. % [H,W] = size(img);
  205. %
  206. % end
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. % l_crop = 10;
  215. % t_crop = 20;
  216. % r_crop = 1;
  217. % b_crop = 1;
  218. % diffLine1 = 3;
  219. %
  220. % [img_crop,H_crop,W_crop] = crop(img,H,W,l_crop,r_crop,t_crop,b_crop);
  221. %
  222. % up = H_crop-2;
  223. % down = 222;
  224. % gsigma = 6;
  225. %
  226. % img_filt = imgaussfilt(img_crop,gsigma);
  227. % % img_line_surf_med = medfilt2(img_crop, [4 4]);
  228. % %%
  229. %
  230. % img_diff = filt_diff(img_filt,H_crop,W_crop,diffLine1);
  231. % [img_line_surf,ind_line_surf,avg_index,ref_line,line1] = line_surf3(img_diff,H_crop,W_crop,diffLine1,up,down);
  232. %
  233. % for i = 1:W_crop
  234. % img_line_surf(1:line1(i)-1,i) = 255;
  235. % end
  236. %
  237. % %%
  238. % img_line_surf = medfilt2(img_line_surf,[1 33]);
  239. % [line3V,line3I] = min(img_line_surf);
  240. %
  241. % for i = 1:W_crop
  242. % img_crop(1:line3I(i),i) = 0;
  243. % end
  244. %
  245. % [H,W] = size(img_crop);
  246. %
  247. % diffLine2 = 5;
  248. % med = 60;
  249. % %img_med = imgaussfilt(img_crop,gsigma);
  250. % img_med = padarray(img_crop',med,'replicate','both');
  251. % img_med = padarray(img_med',med,'replicate','both');
  252. % img_med = medfilt2(img_med,[med*2 med*2]);
  253. % img_med = img_med([med+1:H+med],[med+1:W+med]);
  254. % img_filt1 = zeros(H+diffLine2,W);
  255. % img_filt2 = zeros(H+diffLine2,W);
  256. %
  257. % img_filt1([diffLine2+1:H+diffLine2],:) = img_med;
  258. % img_filt2([1:H],[1:W]) = img_med;
  259. %
  260. % %%
  261. % img_med = img_filt1 - img_filt2;
  262. % img_med = img_med([diffLine2+1:H+diffLine2],:);
  263. %%
  264.  
  265. % img_line2 = zeros(H,W);
  266. %
  267. % for i = 1:W
  268. % [local_max,local_index(i)] = min(img_med(:,i));
  269. % img_line2(local_index(i),i) = 255; %+2 %-10 ubrat -diff
  270. % % line2(i) = local_index-diffLine2; %brat -diff
  271. % line2(i) = local_index(i); %brat -diff
  272. % end
  273. %
  274. % I = line2;
  275. % minRow = min(I);
  276. %
  277. % for i = 1:W
  278. % diffShift(i) = I(i)-minRow;
  279. % end
  280. %
  281. %
  282. % im = zeros(H,W);
  283. % topshift = 50;
  284.  
  285.  
  286. % for i=1:size(im,2)
  287. % j=473-I(i);
  288. % im(topshift+1:(topshift+j+1),i)=img_crop(I(i):(I(i)+j),i);
  289. % % im(topshift+1:(topshift+j-9),i)=img_crop(I(i):(I(i)-10+j),i);
  290. % %im(topshift+1-c:(topshift+j-9),i)=img_crop(I(i)-c:(I(i)-10+j),i);
  291. % end
  292.  
  293. % t_crop = 1;
  294. % l_crop = 1;
  295. % r_crop = 1;
  296. % b_crop = 550;
  297. % [H,W] = size(im);
  298. % [img_crop,H_crop,W_crop] = crop(im,H,W,l_crop,r_crop,t_crop,b_crop);
  299. %
  300. % [H,W] = size(img_crop);
  301. % up = H-2;
  302. %
  303. % img_filt = imgaussfilt(img_crop,gsigma);
  304. % img_diff = filt_diff(img_filt,H,W,diffLine1);
  305. % [img_line_surf,ind_line_surf,avg_index,ref_line,line1] = line_surf3(img_diff,H,W,diffLine1,up,down);
  306.  
  307. % figure()
  308. % imshow(img_crop,[])
  309. % hold on
  310. % plot(line1)
  311. % plot(avg_index)
  312. % hold off
  313. %
  314. % % r_crop = 1;
  315.  
  316. % [peak_height,valley_depth] = peak_valley(line1,avg_index,W);
  317. % [avg_rough(step),rms_rough(step),max_rough(step),total_rough(step)] = roughness(peak_height,valley_depth);
  318. %
  319. %
  320. % img_crop = img_crop-min(img_crop(:)); % shift data such that the smallest element of A is 0
  321. % img_crop = img_crop/max(img_crop(:)); % normalize the shifted data to 1
  322. %
  323. %
  324. % disp(strcat(OpenPath,read_file_name));
  325. %
  326. % write_file_name = read_file_name;
  327. % imwrite(img_crop,fullfile(SavePath,write_file_name),'BitDepth',8);
  328.  
  329.  
  330.  
  331.  
  332. % mean_avg_rough = mean(avg_rough);
  333. % mean_rms_rough = mean(rms_rough);
  334. % mean_max_rough = mean(max_rough);
  335. % mean_total_rough = mean(total_rough);
  336. %
  337. % A = [nm2(1,nm2L),nm1(1,nm1L),num2str(mean_avg_rough),num2str(mean_rms_rough),...
  338. % num2str(mean_max_rough),num2str(mean_total_rough)];
  339. %
  340. % xlRangeVariables = strcat('B',num2str((nm2L-1)*10+nm1L+1),':','G',num2str((nm2L-1)*10+nm1L+1));
  341. % xlswrite(filename,A,xlRangeVariables);
Advertisement
Add Comment
Please, Sign In to add comment