salut pour tout le monde, je vais convertir une image vers une matrice contenant le niveaux de gris de cette image, mais je ne connais pas l'instruction qui fait ça,est ce que quelqu'un qui m'aidez,et merci .
Version imprimable
salut pour tout le monde, je vais convertir une image vers une matrice contenant le niveaux de gris de cette image, mais je ne connais pas l'instruction qui fait ça,est ce que quelqu'un qui m'aidez,et merci .
Une "matrice" ?
Et puis qu'est-ce qui te fait penser qu'il existe une instruction du genre getImageGreyscaleMatrix() ? Peut-être qu'il faudra la programmer toi-même à partir des pixels de l'image.
je connais une api java qui permet de faciliter le traitement des images: JAI(Java Advanced Imaging )
http://java.sun.com/javase/technolog...top/media/jai/
Bonjour silouh, quelle est le type de ton image ? ( raw , jpeg, tiff , gif...)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 //récupération du fichier en fonction de son chemin d'accès FileInputStream file = new FileInputStream(nomImg); //création d'un tableau de byte de taille résolution // qui va enregistrer les octets notre image dataTab = new byte[Hauteur*Largeur]; /* lecture du fichier image car Java considère un fichier comme un flux continu d'octet*/ file.read(dataTab); // buffer de byte dans lequel on enregistre notre tableau d'octet DataBufferByte bufdatabyte = new DataBufferByte(dataTab,Hauteur*Largeur); // création du modèle BandedSampleModel sm = new BandedSampleModel(DataBuffer.TYPE_BYTE,Largeur,Hauteur,1); // initialisation du point d'origine Point point = new Point(0,0); // création du raster Raster raster = Raster.createWritableRaster(sm,bufdatabyte,point); //instanciation du bufferedImage BufferedImage bufdata = new BufferedImage(Largeur,Hauteur,BufferedImage.TYPE_BYTE_GRAY); // définition du rectangle du bufferedImage /*!!!!!! -> image en niveau gris crée ->*/ bufdata.setData(raster);
@magid31 : on peut faire la même chose bien plus facilement.
Lire l'image source : dans un BufferedImage
Convertir l'image en niveaux de gris : créer une BufferedImage en niveaux de gris, et dessiner l'image d'origine dedansCode:BufferedImage sourceImage = ImageIO.read(new File(imageName));
Code:
1
2
3
4
5
6
7 // créer une image en niveaux de gris BufferedImage greyImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY); // dessiner l'image d'origine dedans Graphics2D graph = greyImage.createGraphics(); graph.drawImage(sourceImage, 0, 0, null);
j'ai besoin de l'implementation d'algo RLSA en java!
MatLabCode:
hor_thresh=20;
zeros_count=0;
one_flag=0;
hor_image=image;
for i=1:m
for j=1:n
if(image(i,j)==1)
if(one_flag==1)
if(zeros_count<=hor_thresh)
hor_image(i,j-zeros_count:j-1)=1;
else
one_flag=0;
end
zeros_count=0;
end
one_flag=1;
else
if(one_flag==1)
zeros_count=zeros_count+1;
end
end
end
end
le code en C++:
int hor_thres = 22;
int zero_count = 0;
int one_flag = 0;
for (int i = 0; i<tmpImg.rows; i++){
for (int j = 0; j<tmpImg.cols; j++){
if (tmpImg.at<uchar>(i, j) == 255)
{
if (one_flag == 255)
{
if (zero_count <= hor_thres)
{
tmpImg(cv::Range(i, i + 1), cv::Range(j - zero_count, j)).setTo(cv::Scalar::all(255));
}
else
{
one_flag = 0;
}
zero_count = 0;
}
one_flag = 255;
}
else
{
if (one_flag == 255)
{
zero_count = zero_count + 1;
}
}
}
}