Билинейная интерполяция изображения (zoom)
От: nick_FBI  
Дата: 15.03.12 15:07
Оценка:
Здравствуйте уважаемы форумчане!
Мне никогда не приходилось работать с изображениями по пиксельно, а тут вот надо. Проект на C#. Загружаю обычную bmp'шку в элемент управления picturebox1 и отображаю на форме. Потом из него (picturebox1) загружаю в BITMAP bmImage. Я так понимаю мне нужно создать новый BITMAP с другими значениями полей Width и Heigth.
Я так думаю работать напрямую с BITMAP нельзя и его нужно загружать в массив по цветовым составляющим RGB, но это ведь 3 различных массива!!!
Нашёл COLOR пытался заюзать как Color C=bmImage.GetPixel(i,j); но думаю это не верно.
Наставьте новичка на правильный курс!
Спасибо.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace ZOOM
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void resample(Color C)
{

}

private void toolStripButton1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
pictureBox1.Update();
}
}

private void btn_jobnow_Click(object sender, EventArgs e)
{
int i,j;
Bitmap bmImage = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);

for (i = 0; i < bmImage.Width; i++)
{
for (j = 0; j < bmImage.Height; j++)
{
Color C=bmImage.GetPixel(i,j);
}
}

}



}
}
c# .net zoom интерполяция изображения
Re: Билинейная интерполяция изображения (zoom)
От: vit_as Россия  
Дата: 15.03.12 15:58
Оценка:
Здравствуйте, nick_FBI, Вы писали:

_FB>Здравствуйте уважаемы форумчане!

_FB>Мне никогда не приходилось работать с изображениями по пиксельно, а тут вот надо. Проект на C#. Загружаю обычную bmp'шку в элемент управления picturebox1 и отображаю на форме. Потом из него (picturebox1) загружаю в BITMAP bmImage. Я так понимаю мне нужно создать новый BITMAP с другими значениями полей Width и Heigth.
_FB>Я так думаю работать напрямую с BITMAP нельзя и его нужно загружать в массив по цветовым составляющим RGB, но это ведь 3 различных массива!!!
_FB>Нашёл COLOR пытался заюзать как Color C=bmImage.GetPixel(i,j); но думаю это не верно.
_FB>Наставьте новичка на правильный курс!
_FB>Спасибо.

Здесь
Re: Билинейная интерполяция изображения (zoom)
От: hardcase Пират http://nemerle.org
Дата: 15.03.12 16:01
Оценка:
Здравствуйте, nick_FBI, Вы писали:

_FB>Здравствуйте уважаемы форумчане!


Graphics.DrawImage
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Билинейная интерполяция изображения (zoom)
От: nick_FBI  
Дата: 15.03.12 16:25
Оценка:
Здравствуйте, vit_as, Вы писали:

_>Здравствуйте, nick_FBI, Вы писали:


_FB>>Здравствуйте уважаемы форумчане!

_FB>>Мне никогда не приходилось работать с изображениями по пиксельно, а тут вот надо. Проект на C#. Загружаю обычную bmp'шку в элемент управления picturebox1 и отображаю на форме. Потом из него (picturebox1) загружаю в BITMAP bmImage. Я так понимаю мне нужно создать новый BITMAP с другими значениями полей Width и Heigth.
_FB>>Я так думаю работать напрямую с BITMAP нельзя и его нужно загружать в массив по цветовым составляющим RGB, но это ведь 3 различных массива!!!
_FB>>Нашёл COLOR пытался заюзать как Color C=bmImage.GetPixel(i,j); но думаю это не верно.
_FB>>Наставьте новичка на правильный курс!
_FB>>Спасибо.

_>Здесь


Спасибо за ответ! Там бикубическая интерполяция и код под капотом дотнета, т.е. реализовано в самом дотнете. А мне необходимо реализовать это посредством вот этого алгоритма http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
Я так понимаю у меня должно быть два BITMAP'a с (количеством пикселов)*(на некоторый ratio). и всё же я должен делать это ручками через цветовую составляющую.
Re[3]: Билинейная интерполяция изображения (zoom)
От: vit_as Россия  
Дата: 15.03.12 17:00
Оценка:
Здравствуйте, nick_FBI, Вы писали:


_FB>Спасибо за ответ! Там бикубическая интерполяция и код под капотом дотнета, т.е. реализовано в самом дотнете. А мне необходимо реализовать это посредством вот этого алгоритма http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8F%D1%86%D0%B8%D1%8F

_FB>Я так понимаю у меня должно быть два BITMAP'a с (количеством пикселов)*(на некоторый ratio). и всё же я должен делать это ручками через цветовую составляющую.

Тогда работайте напрямую с пикселями изображений. Для этого скорее всего нужно включить unsafe или делать реализацию на C++/CLI

Bitmap.LockBits
Example
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.