2010-11-15 6 views
6

Comment dessiner une grille sur une image. Cela devrait faire partie de cette image même. Il devrait être capable d'afficher certaines lignes et colonnes sur l'image elle-même. Les lignes pour les lignes et les colonnes peuvent être spécifiées. En fait, j'ai été encouragé par la façon dont certains documents de recherche discutent des résultats qu'ils ont sur le gauchissement de l'image. Un des liens est le suivant: http://www.hammerhead.com/thad/morph.htmlDans matlab, comment dessiner une grille sur une image

Répondre

10

Il y a un certain nombre de questions connexes sur SO qui traitent des façons de modifier une image. Voici les deux approches générales:

1. Modifiez les données d'image directement: J'en discute dans my answer to this other SO question. Comme les données d'image peuvent être 2-D or 3-D, vous pouvez utiliser multidimensional indexing pour modifier les données d'image brutes, en créant des lignes le long de lignes et de colonnes données. Voici un exemple qui change toutes les 10 lignes et colonnes dans l'image en noir:

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

Et maintenant, les données d'image dans la img variable a des lignes noires sur elle, et vous pouvez l'écrire à un fichier ou faire tout autre traitement que vous le souhaitez.

2. Tracer l'image et les lignes, puis tournez les axes/figure dans une nouvelle image: Le link to Steve Eddins' blog à zellus' answer montre un exemple de la façon dont vous pouvez tracer une image et ajouter des lignes à elle. Toutefois, si vous souhaitez enregistrer ou effectuer un traitement sur l'image affichée, vous devez enregistrer l'image affichée en tant que matrice d'image. Comment vous pouvez faire cela a été discuté dans ces SO questions:

+1

J'ai senti l'exemple de code dans '1.Modifier directement les données d'image' était un peu plus simple. La section «2.Placez l'image et la ligne ...» a également été utile. –

3

Superimposing line plots on images du blog 'Steve on Image Processing' a un bel exemple de superposition d'une grille sur une image.

+0

Merci, c'était l'exemple le plus simple que j'ai vu. –

1

En fait, je regardé cette question après avoir fait ce code par mon propre .... le code lit une image et de la grille dessiner sur l'image tous les paramètres d'entrée

J'espère qu'il ferait tout bon :)

Regarder Matlab code:

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 
Questions connexes