1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Tri_Optique
{
public partial class Form1 : Form
{
private int[] pixelR0;
private int[] pixelV0;
private int[] pixelB0;
private int[] pixel0;
private int[] pixelRRef;
private int[] pixelBRef;
private int[] pixelVRef;
private int[] pixelRef;
private int[] tabB;
private int[] tabR;
private int[] tabV;
public Form1()
{
InitializeComponent();
}
private void quitterToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void pToolStripMenuItem_Click(object sender, EventArgs e)
{
Config_Parametres fenetre = new Config_Parametres();
fenetre.ShowDialog();
}
private void nouvelleConfigurationParApprentissageToolStripMenuItem_Click(object sender, EventArgs e)
{
Config_Apprentissage fenetre = new Config_Apprentissage();
fenetre.ShowDialog();
}
private void button_Ouvrir_Click(object sender, EventArgs e)
{
Bitmap image = new Bitmap("E:\\images bouchons\\image31.bmp");
pictureBox_Video.Image = image;
Bitmap imageref = new Bitmap("E:\\images bouchons\\image_ref.bmp");
pictureBox_imageRef.Image = imageref;
//conversion de l'image en tableau pour exploitation
int i, j;
int dimX = image.Width;
int dimY = image.Height;
int nb = dimX * dimY;
pixelR0 = new int[nb];
pixelV0 = new int[nb];
pixelB0 = new int[nb];
pixel0 = new int[nb];
BitmapData imageP = image.LockBits(new Rectangle(Point.Empty, image.Size), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
// Récupération des plans R, V, B...
unsafe
{
Byte* pPixel = (Byte*)imageP.Scan0;
for (int y = 0; y < dimY; y++)
{
for (int x = 0; x < dimX; x++)
{
i = y * dimX + x; j = 3 * x;
pixelB0[i] = pPixel[j];
pixelV0[i] = pPixel[j + 1];
pixelR0[i] = pPixel[j + 2];
}
pPixel += imageP.Stride;
}
}
image.UnlockBits(imageP);
//conversion de l'image de référence en tableau pour exploitation
i = 0;
j = 0;
int dimXref = image.Width;
int dimYref = image.Height;
int nbref = dimXref * dimYref;
pixelRRef = new int[nbref];
pixelVRef = new int[nbref];
pixelBRef = new int[nbref];
pixelRef = new int[nbref];
BitmapData imagePref = imageref.LockBits(new Rectangle(Point.Empty, imageref.Size), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
// Récupération des plans R, V, B...
unsafe
{
Byte* pPixel = (Byte*)imagePref.Scan0;
for (int y = 0; y < dimYref; y++)
{
for (int x = 0; x < dimXref; x++)
{
i = y * dimXref + x; j = 3 * x;
pixelRRef[i] = pPixel[j];
pixelVRef[i] = pPixel[j + 1];
pixelBRef[i] = pPixel[j + 2];
}
pPixel += imagePref.Stride;
}
}
imageref.UnlockBits(imagePref);
i=0;
j=0;
for (j=0; j<300; j++)
{ for (i=0; i<4096; i++)
tabB[4096*j+i]=pixelB0[4096*j+i]-pixelBRef[4096*j+i];
tabR[4096 * j + i] = pixelB0[4096 * j + i] - pixelBRef[4096 * j + i];
tabV[4096 * j + i] = pixelB0[4096 * j + i] - pixelBRef[4096 * j + i];
}
}
}
} |
Partager