В Matlab, как нарисовать сетку поверх изображения - PullRequest
7 голосов
/ 15 ноября 2010

Как нарисовать сетку поверх изображения. Он должен стать частью самого изображения. Он должен иметь возможность показывать некоторые строки и столбцы поверх самого изображения. Строки для строк и столбцов могут быть указаны. На самом деле меня воодушевило то, как в какой-то исследовательской работе обсуждаются полученные ими результаты по искажению изображения. Одна из ссылок такова: http://www.hammerhead.com/thad/morph.html

Ответы [ 3 ]

13 голосов
/ 15 ноября 2010

Существует несколько связанных с SO вопросов, в которых обсуждаются способы изменения изображения. Вот два основных подхода:

1. Измените данные изображения напрямую: Я обсуждаю это в мой ответ на этот другой вопрос SO . Поскольку данные изображения могут быть 2-D или 3-D , вы можете использовать многомерное индексирование для изменения необработанных данных изображения, создавая линии вдоль заданных строк и столбцов. Вот пример, который меняет каждые 10 строк и столбцов изображения на черный:

img = imread('peppers.png');  %# Load a sample 3-D RGB image
img(10:10:end,:,:) = 0;       %# Change every tenth row to black
img(:,10:10:end,:) = 0;       %# Change every tenth column to black
imshow(img);                  %# Display the image

alt text

И теперь данные изображения в переменной img имеют черные линии, и вы можете записать их в файл или выполнить любую другую обработку, какую захотите.

2. Поместите изображение и линии, затем превратите оси / фигуру в новое изображение: Ссылка на блог Стива Эддинса в ответе zellus показывает пример того, как вы Можно построить изображение и добавить к нему линии. Однако если вы хотите сохранить или выполнить обработку изображения , отображаемого , вам придется сохранить отображаемое изображение в виде матрицы изображений. Как вы можете это сделать, обсуждалось в следующих других SO-вопросах:

3 голосов
/ 15 ноября 2010

Наложение линейных графиков на изображения из блога «Steve on Image Processing» содержит хороший пример наложения сетки на изображение.

1 голос
/ 27 ноября 2011

На самом деле я наблюдал за этим вопросом после того, как сделал этот код самостоятельно ... код читает изображение и рисует сетку на изображении для каждого входного параметра

Надеюсь, это пойдет на пользу :)

Посмотрите код Matlab:

function [ imageMatdouble ] = GridPicture( PictureName , countForEachStep )
 %This function grid the image into counts grid 
pictureInfo = imfinfo(PictureName);     %load information about the input 

 [inputImageMat, inputImageMap] = imread(PictureName);        % Load the image     

 if (pictureInfo.ColorType~='truecolor')
    warning('The function works only with RGB (TrueColor) picture');
    return 
 end

%1. convert from trueColor(RGB) to intensity (grayscale)
 imageMat = rgb2gray(inputImageMat);   

%2. Convert image to double precision.
 imageMatdouble =im2double(imageMat);  

 % zero is create indicated to black 
 height = pictureInfo.Height ; 
 width = pictureInfo.Width
  i=1;j=1;  
 while (i<=height ) 
     for j=1:width
         imageMatdouble(i,j)=1;
    end
    j=1;
    if (i==1)
       i=i+countForEachStep-1;
   else 
       i=i+countForEachStep;
   end
  end


   i=1;j=1;  
  while (i<=width ) 
  for j=1:height
      imageMatdouble(j,i)=1;
   end
  j=1;
  if (i==1)
      i=i+countForEachStep-1;
  else 
       i=i+countForEachStep;
   end

 end

 imwrite(imageMatdouble,'C:\Users\Shahar\Documents\MATLAB\OutputPicture.jpg')



 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...