//------------------------------------------------------------------------------------------- Клин /// <summary> /// Клин от I0 до 255 размер текущий размер /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { k12 = Convert.ToInt32(textBox8.Text); gamma = Convert.ToDouble(textBox7.Text); nx = Convert.ToInt32(textBox14.Text); // Текущий размер ny = Convert.ToInt32(textBox15.Text); dx = Convert.ToInt32(textBox20.Text); // Полосы по краям int nu = 255; // Число уровней Form1.zArrayDescriptor[k12 - 1] = Model_Sinus.Intensity1(nu, nx, ny, dx, gamma); VisualRegImage(k12 - 1); // Close(); }
/// <summary> /// Автоматическое определение клина /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button15_Click(object sender, EventArgs e) { int nx = 3096; int ny = 2160; int nx1 = nx + dx * 2; // Размер для изображения с добавленными полосами int kv = 16; // Число градаций Form1.zArrayDescriptor[0] = Model_Sinus.Intensity1(255, nx, ny, dx, 1); // Идеальная интенсивностсть => 1 VisualRegImage(0); TakePhoto12(); VisualRegImage(1); DialogResult dialogResult = MessageBox.Show("Заданы границы X0, X1, X2, X3 ?", "Ограничение по размеру", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { return; } Form1.Coords[] X = MainForm.GetCoordinates(); Form1.zArrayDescriptor[6] = File_Change_Size.Change_rectangle(Form1.zArrayDescriptor[1], X); // Ограничение по размеру 2 => 7 Form1.zArrayDescriptor[6] = SumClass.Sum_zArrayY_ALL(Form1.zArrayDescriptor[6]); // Суммирование по Y 7 => 7 VisualRegImage(6); int nx2 = Form1.zArrayDescriptor[6].width; // Размер массива после ограничения int ny2 = Form1.zArrayDescriptor[6].height; int N_Line = ny2 / 2; // Линия по центральной строке //---------------------------------------------------------------------------------------------- Идеальный клин без ввода с новыми размерами Form1.zArrayDescriptor[0] = Model_Sinus.Intensity1(255, nx2, ny2, dx, 1); Form1.zArrayDescriptor[1] = Minus100(Form1.zArrayDescriptor[0], 100); VisualRegImage(1); double[] am_Clin_Ideal = new double[nx2]; // Идеальный клин от 0 до 255 for (int i = 0; i < nx2; i++) { am_Clin_Ideal[i] = Form1.zArrayDescriptor[1].array[i, N_Line]; } double[] am_Clin = new double[nx2]; // Отклик от идеального клина от 0 до 255 for (int i = 0; i < nx2; i++) { am_Clin[i] = Form1.zArrayDescriptor[6].array[i, N_Line]; } //---------------------------------------------------------------------------------------------- Черно белые полосы => 0 Form1.zArrayDescriptor[0] = BW_Line(nx, ny, kv); // Полосы с kv градациями VisualRegImage(0); TakePhoto12(); //---------------------------- Фото => 1 MessageBox.Show("Ч/Б полосы введены"); Form1.zArrayDescriptor[3] = File_Change_Size.Change_rectangle(Form1.zArrayDescriptor[1], X); //----------------- Ограничение по размеру => 2 VisualRegImage(3); Form1.zArrayDescriptor[3] = SumClass.Sum_zArrayY_ALL(Form1.zArrayDescriptor[3]); Form1.zArrayDescriptor[4] = BW_Line_255(Form1.zArrayDescriptor[3], 210); // --------------Выше порога 255 ниже 0 VisualRegImage(4); double[] am_BW = BW_Num(Form1.zArrayDescriptor[4], N_Line); // размер новый после прямоугольного ограничения //---------------------------------------------------------------------------------------------- Определение нового клина double[] cl1 = NewClin(am_Clin, am_BW, am_Clin_Ideal); //----------------------------------------------------------------------------------------------Отображение нового клина ZArrayDescriptor cmpl = new ZArrayDescriptor(nx1, ny); double[] am = Clin(cl1, kv, nx); for (int i = 0; i < nx; i++) { for (int j = 0; j < ny; j++) { cmpl.array[i + dx, j] = am[i]; } // ----------------- Клин в рабочий массив } cmpl = Model_Sinus.Intens(255, 0, dx, cmpl); // Белая и черная полоса по краям Form1.zArrayDescriptor[7] = cmpl; // новый клин в 7 массив VisualRegImage(7); for (int i = 0; i < 16; i++) { cl[i] = cl1[i]; } }