Apply interpolation technique to complete missing points

5 vues (au cours des 30 derniers jours)
Alina tom
Alina tom le 27 Déc 2018
Modifié(e) : Image Analyst le 27 Déc 2018
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
  2 commentaires
madhan ravi
madhan ravi le 27 Déc 2018
fillmissing ?
Alina tom
Alina tom le 27 Déc 2018
I want to interpolate values between these point to make a complete circle ?

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 27 Déc 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 commentaires
Alina tom
Alina tom le 27 Déc 2018
Modifié(e) : Image Analyst le 27 Déc 2018
how i can use this with my data point
x = pi*[0:.5:2];
y = [0 1 0 -1 0 1 0;
1 0 1 0 -1 0 1];
pp = spline(x,y);
yy = ppval(pp, linspace(0,2*pi,101));
plot(yy(1,:),yy(2,:),'-b',y(1,2:5),y(2,2:5),'or')
axis equal
Image Analyst
Image Analyst le 27 Déc 2018
Modifié(e) : Image Analyst le 27 Déc 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by