Let us worry about your assignment instead!

We Helped With This Electrical Engineering Assignment: Have A Similar One?

SOLVED
CategoryEngineering
SubjectElectrical Engineering
DifficultyCollege
StatusSolved
More InfoElectrical Engineering Help Online
29181

Short Assignment Requirements

Please check if you can solve these two problems in the next five hours

Assignment Code


function Iout = hw2filters(type,filename)
%function to apply selected filters to an image and animate
try
    I = imadjust(imread(filename));
catch
    error('--> cannot read file <--');
end

figure;
subplot 122

%make image double for subsequent filtering
I=double (I)
% imshow(I,[0 255]); % the range must be specificed for double images
%note: I'm displaying again becasue of a bug in Matlab ...
subplot 121
imshow(I, [0 255]);

switch lower(type)
    case {'thresh'}
        disp('Thresholding');
        Iout=thresh(I);
    case {'median'}
        disp('Median Filter');
        Iout=median(I,20);
    case {'blur_gauss'}
        disp('Blurring Gaussian');
        Iout=blur_gauss(I,20);
     case {'log'}
        disp('Blurring Laplacian of Gaussian');
        Iout=log(I,11,2);    
    case {'blur_laplace'}
        disp('Blurring Laplacian');
        Iout=blur_laplace(I,1);
    case {'blur_ave'}
        disp('Bluring Using Average ');
        Iout=blur_ave(I,11);
    case {'unsharp'}
        disp('Unsharpening');
        Iout=unsharp(I,3,2);
    case {'blur_disk'}
        disp('Blurring Disk Filter');
        Iout=blur_disk(I,10);    
    case {'hor_prewitt_edge'}
        disp('Prewitt Horizontal Edge');
        Iout=hor_prewitt_edge(I);
    case {'ver_prewitt_edge'}
        disp('Prewitt Vertical Edge');
        Iout=ver_prewitt_edge(I);
    case {'hor_sobel_edge'}
        disp('Sobel Horizontal Edge');
        Iout=ver_sobel_edge(I);
    case {'ver_sobel_edge'}
        disp('Sobel Vertical Edge');
        Iout=ver_sobel_edge(I);
    case {'canny_edge'}
        disp('Canny Edge Detection');
        Iout=canny_edge(I);
    case {'motion'}
        disp('Motion');
        Iout=motion(I,20,10);
    otherwise
        disp('Unknown method.');
end
return

    function Iout = thresh(I)
        i=0;
        subplot(1,2,2); hold on;
        for thresh=1:6:254
            i=i+1;
            Iout=I < thresh;
            imshow(Iout);
            pause(0.1);
            drawnow;
            swp(i) = sum(sum(Iout))/(256*256);
            %fprintf('-> thresh = %u, swp = %f
',thresh, swp(i));
        end
        hold off
        figure, plot(swp)
        return
  
     
     function Iout = median(I,mat_max)
    % this function requires the mat_max variable which is the size of
    % matrix(row and column same dimension
    subplot(1,2,2); hold on;
    for mat_size=1:mat_max
        Iout=medfilt2(I,[mat_size,mat_size]);
        imshow(Iout,[0 255]);
        title(strcat('Size nxn Matrix=',num2str(mat_size)));
        pause(0.1);
        drawnow;
    end
    hold off
    return
    
           
    function Iout = blur_gauss(I,sigma_max)
    % this function is a rotationally symmetric gaussian low pass filter
    % HSIZE variable which is vector specifying size row and column
    % SIGMA standard deviation and must be positive
    subplot(1,2,2); hold on;
    for sigma=1:0.5:sigma_max
        Iout=imgaussfilt(I,sigma);
        imshow(Iout,[0 255]);
        title(strcat('Sigma=',num2str(sigma)));
        pause(0.8);
        drawnow;
    end
    return
    
    function Iout =log(I,size_max,sigma_max)
    % this function requires the 'sigma' and 'size' variables
    % you must create a loop for the sigma variable
    subplot(1,2,2); hold on;
    for sigma=0.1:0.1:sigma_max
        for size=1:size_max
            H=fspecial('log',size, sigma);
            Iout=imfilter(I,H,'replicate');
            imshow(Iout,[0 255]);
            title(strcat('Sigma=',num2str(sigma),'  Size=',num2str(size)));
            pause(0.1);
            drawnow;
        end
    end
    return
    
     function Iout = blur_laplace(I,alpha_max)
    % 3x3 filter this function requires the 'alpha' variable which is the
    % shape of the laplacian and is in the range 0-1
       subplot(1,2,2); hold on;
    for alpha=0.01:0.05:alpha_max
        H=fspecial('laplacian',alpha);
        Iout=imfilter(I,H,'replicate');
        imshow(Iout);
        title(strcat('Alpha=',num2str(alpha)));
        pause(0.2);
        drawnow;
    end
    return
                    
    function Iout = unsharp(I,radius_max,amount_max)
    % filter used as part of unsharp masking.
    % Radius - Specifies the standard deviation of the Gaussian lowpass
    % filter used as part of unsharp masking. This value controls the size 
    % of the region around the edge pixels that is affected by sharpening
    % A large value sharpens wider regions around the edges, whereas a small 
    % value sharpens narrower regions around edges. Default value is 1.
 
    % Amount - Specifies the strength of the sharpening effect. A higher
    % value leads to larger increase in the contrast of the sharpened pixels. 
    % Typical values for this parameter are within the range [0 2], although 
    % values greater than 2 are allowed. Very large values for this parameter 
    % may create undesirable effects in the output image. Default value is 0.8.
    
    subplot(1,2,2); hold on;
    i=0;
    for value=0.1:0.2:amount_max
        for radius=0.1:0.2:radius_max
            Iout=imsharpen(I,'Radius',radius,'Amount',value);
            imshow(Iout,[0 255]);
            title(strcat('Radius=',num2str(radius),'  Value=',num2str(value)));
            pause(0.1);
            drawnow;
        end
    end;
    return
    
    
    function Iout = blur_disk(I,max_radius)
    % simple bluring using a circular averaging filter (pillbox) 
    % within the square matrix of side 2*RADIUS+1.
    % The default RADIUS is 5.
    subplot(1,2,2); hold on;
    for radius=1:0.1:max_radius
        H=fspecial('disk',radius);
        Iout=imfilter(I,H,'replicate');
        imshow(Iout,[0 255]);
        title(strcat('Radius=',num2str(radius)));
        pause(0.1);
        drawnow;
    end;
    return

                        
    function Iout = ver_sobel_edge(I)
    % simple horizontal edge emphasizing display
    % returns 3-by-3 filter that emphasizes
    % horizontal edges utilizing the smoothing effect by approximating a
    % vertical gradient. If you need to emphasize vertical edges, transpose
    % the filter H: H'.  [1 2 1;0 0 0;-1 -2 -1].
    subplot(1,2,2); hold on;
    H=fspecial('sobel');
    Iout=imfilter(I,H','replicate');
    title('Sobel Vertical Edge Emphasizing');
    imshow(Iout,[0 255]);
    pause(0.3);
    drawnow;
    return
    
    function Iout = hor_sobel_edge(I)
    % See vertical Sobel 
    subplot(1,2,2); hold on;
    H=fspecial('sobel');
    Iout=imfilter(I,H,'replicate');
    title('Sobel Horizontal Edge Emphasizing');
    imshow(Iout,[0 255]);
    pause(0.3);
    drawnow;
    return
                            
     function Iout = hor_prewitt_edge(I)
     % simple horizontal edge emphasizing display
     % returns 3-by-3 filter that emphasizes
     % horizontal edges by approximating a vertical gradient. If you need to
     % emphasize vertical edges, transpose the filter H: H'.
     % [1 1 1;0 0 0;-1 -1 -1].
     subplot(1,2,2); hold on;
     H=fspecial('prewitt');
     Iout=imfilter(I,H,'replicate');
     title('Prewitt Horizontal Edge Emphasizing');
     imshow(Iout,[0 255]);
     pause(0.3);
     drawnow;
     return
                 
     
     function Iout = ver_prewitt_edge(I)
     % simple vertical edge emphasizing display see ho edgerizontal Prewitt
     subplot(1,2,2); hold on;
     H=fspecial('prewitt');
     Iout=imfilter(I,H','replicate');
     title('Prewitt Vertical Edge Emphasizing');
     imshow(Iout,[0 255]);
     pause(0.3);
     drawnow;
     return
     
     function Iout = canny_edge(I)
     % Canny edge emphasizing display
     subplot(1,2,2); hold on;
     Iout = edge(I,'canny');
     imshow(Iout);  
     pause(0.1)
     drawnow
     return
     
     function Iout = motion(I,len_max,theta_max)
     % simple bluring using a circular averaging filter (pillbox)
     subplot(1,2,2); hold on;
     for len=1:len_max
         for theta=0:5:theta_max
             H=fspecial('motion',len,theta);
             Iout=imfilter(I,H,'replicate');
             imshow(Iout,[0 255]);
             title(strcat('Len=',num2str(len),'  Theta=',num2str(theta)));
             pause(0.1);
             drawnow;
         end
     end;
     return

                                   

Assignment Image

Electrical Engineering Assignment Description Image [Solution]
1. Modify the hw2filters.m function library (yours or the posted solution version) per the following instructions: a. Create a new function exam and add case {'exam'} to the switch statement to invoke the function using the calling sequence: l=hw2filters('exam', 'hwtest1.jpg'); (8 pts) b. Within the exam function, add a imsharpen function call with 'Amount'-2 and 'Radius'=3 to sharpen the original image (8 pts) c. Within the exam function, add a averaging filter with 'HSize'=5 to blur the original image (8 pts) d. On a single figure, (Figure 1) plot the original image, the sharpened image and the blurred image using 3 plots arranged in a 1x3 matrix (1 row, 3 columns). Include a descriptive title for each plot (8 pts) e. On a single figure (Figure 2) plot the intensity values of image row 200 versus the column (x) positions for the original, sharpened and blurred images on a single plot Include x and y-axis labels and a descriptive title (8 pts) f. Explain what you observe between the original intensity values at any position and the sharpened and blurred intensities at these same positions. How does this correlate to what you would expect from the sharpening and blurring filters used (10 pts) g. Bonus: Run the modified program for the image: vessels.jpg (see "Assorted Files" content area) and add any additional observations (20 pts)

Frequently Asked Questions

Is it free to get my assignment evaluated?

Yes. No hidden fees. You pay for the solution only, and all the explanations about how to run it are included in the price. It takes up to 24 hours to get a quote from an expert. In some cases, we can help you faster if an expert is available, but you should always order in advance to avoid the risks. You can place a new order here.

How much does it cost?

The cost depends on many factors: how far away the deadline is, how hard/big the task is, if it is code only or a report, etc. We try to give rough estimates here, but it is just for orientation (in USD):

Regular homework$20 - $150
Advanced homework$100 - $300
Group project or a report$200 - $500
Mid-term or final project$200 - $800
Live exam help$100 - $300
Full thesis$1000 - $3000

How do I pay?

Credit card or PayPal. You don't need to create/have a Payal account in order to pay by a credit card. Paypal offers you "buyer's protection" in case of any issues.

Why do I need to pay in advance?

We have no way to request money after we send you the solution. PayPal works as a middleman, which protects you in case of any disputes, so you should feel safe paying using PayPal.

Do you do essays?

No, unless it is a data analysis essay or report. This is because essays are very personal and it is easy to see when they are written by another person. This is not the case with math and programming.

Why there are no discounts?

It is because we don't want to lie - in such services no discount can be set in advance because we set the price knowing that there is a discount. For example, if we wanted to ask for $100, we could tell that the price is $200 and because you are special, we can do a 50% discount. It is the way all scam websites operate. We set honest prices instead, so there is no need for fake discounts.

Do you do live tutoring?

No, it is simply not how we operate. How often do you meet a great programmer who is also a great speaker? Rarely. It is why we encourage our experts to write down explanations instead of having a live call. It is often enough to get you started - analyzing and running the solutions is a big part of learning.

What happens if I am not satisfied with the solution?

Another expert will review the task, and if your claim is reasonable - we refund the payment and often block the freelancer from our platform. Because we are so harsh with our experts - the ones working with us are very trustworthy to deliver high-quality assignment solutions on time.

Customer Feedback

"Thanks for explanations after the assignment was already completed... Emily is such a nice tutor! "

Order #13073

Find Us On

soc fb soc insta


Paypal supported