Search code examples
matlabimage-processingcolorsmatlab-figurergb

How to smoothen the edges from an image obtained from imagesc function


I have an RGB image obtained from saving the imagesc function as shown below. how to refine/smoothen the edges present in the image.

enter image description here

It consists of sharper edges, where I need to smoothen them. Im not able to find a solution for performing this for an RGB image. Instead of the staircase effect seen in the image I'd like to even out the edges. Please help thanks in advance.


Solution

  • maybe imresize will help you:

    % here im just generating an image similar to yours
    A = zeros(20);
    for ii = -2:2
        A = A + (ii + 3)*diag(ones(20-abs(ii),1),ii);
    end
    A([1:5 16:20],:) = 0;A(:,[1:5 16:20]) = 0;
    subplot(121);
    imagesc(A);
    title('original')
    % resizing image with bi-linear interpolation
    B = imresize(A,100,'bilinear');
    subplot(122);
    imagesc(B);
    title('resized')
    

    EDIT

    here I do resize + filtering + rounding:

    % generates image
    A = zeros(20);
    for ii = -2:2
        A = A + (ii + 3)*diag(ones(20-abs(ii),1),ii);
    end
    A([1:5 16:20],:) = 0;A(:,[1:5 16:20]) = 0;
    subplot(121);
    imagesc(A);
    title('original')
    % resizing
    B = imresize(A,20,'nearest');
    % filtering & rounding
    C = ceil(imgaussfilt(B,8));
    subplot(122);
    imagesc(C);
    title('resized')
    

    enter image description here