--- a +++ b/Update_frontend/task_upgrade.m @@ -0,0 +1,104 @@ +%task 2 ___ Update 1.0 +%%%a front end script %%%%%%%%%%%%%%%%%% +%% the contour can be visualized in this script in a more mathematically efficient manner +%% the images will be saved in a directory after plot +%% this can be loaded for the next step processing +%% this script is designed for all knds of scenario which may arrise according to 3D image processing +%% +%%%%%%Task 2 a differennt approach <more mathematical>%%%%%%%%%%%%%%%%%%%%%%%% +%========================================================================= + +clear all; +close all; +clc; + +%input the params from the user + +prompt = {'Enter Xus (cm):','Enter Yus (cm):','Enter sx (cm):'... + 'Enter sy (cm):','Enter FOV (Degrees):'... + 'Enter Angle per Frame (Degrees):','Enter R (cm):','Enter Yp (cm):'}; +dlg_title = 'Input User Parameters'; +num_lines = 1; +def = {'10','10','0.1','0.1','120','2','2','6'}; +answer = inputdlg(prompt,dlg_title,num_lines,def); +Xus = str2double(answer(1));Yus = str2double(answer(2)); +sx = str2double(answer(3));sy = str2double(answer(4)); +FOV = str2double(answer(5));APF = str2double(answer(6)); +R = str2double(answer(7));Yp = str2double(answer(8)); + +%define figures + +h = figure; +image_index = 1; + +%make folder + +mkdir('Projection_Images'); +cd('Projection_Images'); + +for angle = -FOV/2 : APF : FOV/2 + %generate the parametric array + t = linspace(0,2*pi,1000); + + %convert the angle to radians + alpha = angle*pi/180; + + %calculate A + A = 1 + (tan(alpha))^2; + + if (R^2 - Yp^2 + Yp^2/A < 0) + continue; + end + + %Parametric eqautions of the intersection contours + x = sqrt(R^2 - Yp^2 + Yp^2/A)*cos(t); + y = Yp/A + sqrt(R^2 - Yp^2 + Yp^2/A)/sqrt(A)*sin(t); + z = y*tan(alpha); + + %Get the computed points in to a matrix + points = [x;y;z]; + + %plot the intersection contours + h = plot3(points(1,:),points(2,:),points(3,:));hold on; + title('Intersection Contours');axis tight; + + %compute the rotational matrix + Rx = rotx(-angle); + + %flatten the inclined contour + points = Rx*points; + + %extract the X,Y coordinates from the flattened contour + X = points(1,:); + Y = points(2,:); + + %apply a shift to X coordinates + X = X + Xus/2; + + %create an image pad + image_pad = zeros(Xus/sx,Yus/sy); + Xn = roundn(X,-1)*10; + Yn = roundn(Y,-1)*10; + + %Sketch the boundary of the contour on the image pad + for i = 1 : numel(Xn) + image_pad(Xn(i),Yn(i)) = 255; + end + + %convert the image pad matrix to uni8 + im = mat2gray(image_pad); + + %fill the contour interior to complete the projection image + im = imfill(im,'holes'); + + %save the image + filename = 'p%d.bmp'; + filename = sprintf(filename,image_index); + image_index = image_index + 1; + imwrite(im,filename); + +end + +%save the +saveas(h,'Intersection_contours.fig'); +