2010-11-15 31 views
6

Cómo dibujar una grilla sobre una imagen. Debería convertirse en parte de esa imagen en sí misma. Debería poder mostrar algunas filas y columnas sobre la imagen en sí. Las líneas para filas y columnas se pueden especificar. En realidad, me alentó la forma en que un trabajo de investigación discute sobre los resultados que tienen sobre el deformado de la imagen. Uno de los enlaces es este: http://www.hammerhead.com/thad/morph.htmlEn matlab, cómo dibujar una grilla sobre una imagen

Respuesta

10

Hay una serie de preguntas relacionadas en SO que discuten formas de modificar una imagen. Aquí están los dos enfoques generales:

1. Modifique los datos de la imagen directamente: Discuto esto en my answer to this other SO question. Dado que los datos de imagen pueden ser 2-D or 3-D, puede usar multidimensional indexing para modificar los datos de imagen en bruto, creando líneas a lo largo de filas y columnas determinadas. He aquí un ejemplo que cambia cada 10 filas y columnas en la imagen a negro:

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

Y ahora los datos de la imagen en la variable img tiene líneas negras en él, y usted puede escribirla en un archive o haga cualquier otro procesamiento que desee.

2. Trace la imagen y las líneas, a continuación, gire el eje/figura en una nueva imagen: El link to Steve Eddins' blog en zellus' answer muestra un ejemplo de cómo se puede trazar una imagen y añadir líneas a la misma. Sin embargo, si desea guardar o realizar el procesamiento en la imagen que se muestra, tendrá que guardar la imagen mostrada como una matriz de imagen. ¿Cómo se puede hacer esto se ha discutido en estos otros SO preguntas:

+1

Sentí que el código de ejemplo en '1.Modificar los datos de imagen directamente' era un poco más simple. La sección '2. Trazar la imagen y la línea ...' también fue útil. –

3

Superimposing line plots on images del blog 'Steve on Image Processing' tiene un buen ejemplo sobre la superposición de una grilla sobre una imagen.

+0

Gracias, este fue el ejemplo más simple que vi. –

1

En realidad Vi esta pregunta después de hacer esto por mi propio código .... lee el código una imagen y dibujar cuadrícula en la imagen cada parámetro de entrada

espero que haría ningún bien :)

reloj del Matlab código:

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 
Cuestiones relacionadas