Apply interpolation technique to complete missing points
3 views (last 30 days)
Show older comments
Hi All ,
I have an image of some points and i want to apply the interpolation technique between these points to make a circluar shape. but i dont know how i can apply different interpolation techniques . can anyone help me to aur any suggestion that how i can interpolate data between these points. here i have attached the image
Accepted Answer
Image Analyst
on 27 Dec 2018
There's no way with those few points to get all the little wiggles in the boundary that you want. The best you can do is to compute the boundary of the convex hull of the points using bwconvhull() followed by bwperim(). Only other way would be to overfit the coordinates with a polynomial or spline but there is no guarantee that those are any more accurate than the convex hull.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
% clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 18;
folder = pwd; % Current folder.
baseFileName = '3.jpg';
% % Have user browse for a file, from a specified "starting folder."
% % For convenience in browsing, set a starting folder from which to browse.
% startingFolder = pwd; % or 'C:\wherever';
% if ~exist(startingFolder, 'dir')
% % If that folder doesn't exist, just start in the current folder.
% startingFolder = pwd;
% end
% % Get the name of the file that the user wants to use.
% defaultFileName = fullfile(startingFolder, '01.png');
% [baseFileName, folder] = uigetfile(defaultFileName, 'Select a file');
% if baseFileName == 0
% % User clicked the Cancel button.
% return;
% end
fullFileName = fullfile(folder, baseFileName)
%===============================================================================
% Check if file exists.
if ~exist(fullFileName, 'file')
% The file doesn't exist -- didn't find it there in that folder.
% Check the entire search path (other folders) for the file by stripping off the folder.
fullFileNameOnSearchPath = baseFileName; % No path this time.
if ~exist(fullFileNameOnSearchPath, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist in the search path folders.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
rgbImage = imread(fullFileName);
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(rgbImage)
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
% grayImage = rgb2gray(rgbImage);
% ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
grayImage = rgbImage(:, :, 3); % Take bluechannel.
else
grayImage = rgbImage; % It's already gray scale.
end
% Now it's gray scale with range of 0 to 255.
% Display the image.
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Image', 'FontSize', fontSize, 'Interpreter', 'None');
axis('on', 'image');
hp = impixelinfo();
%------------------------------------------------------------------------------
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, 0.96]);
% Get rid of tool bar and pulldown menus that are along top of figure.
% set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
% Threshold.
mask = grayImage > 127;
% Get rid of white lines on the edge of the image.
mask = imclearborder(mask);
% Display the mask.
subplot(2, 2, 2);
imshow(mask);
hp = impixelinfo();
axis('on', 'image'); % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Initial Mask', 'FontSize', fontSize);
% Get the convex hull
mask = bwconvhull(mask);
% Display the mask.
subplot(2, 2, 3);
imshow(mask);
hp = impixelinfo();
axis('on', 'image'); % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Final Mask', 'FontSize', fontSize);
% Get the perimeter
perimImage = bwperim(mask);
% Display the mask.
subplot(2, 2, 4);
imshow(perimImage);
hp = impixelinfo();
axis('on', 'image'); % Make sure image is not artificially stretched because of screen's aspect ratio.
title('Perimeter', 'FontSize', fontSize);
3 Comments
Image Analyst
on 27 Dec 2018
Edited: Image Analyst
on 27 Dec 2018
You need a 1-D vector of x values (which you have), and a 1-D vector of y values that correspond to the x values (which you do not have).
y should be a 1-D vector with one y value for every x value. Your y is a 2-by-7 matrix while your x is a 1-by-5 vector. Not good.
More Answers (0)
See Also
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!