
2012年5月5日 星期六
2012年5月4日 星期五
紅綠藍瀘鏡運用&增加圖片亮度
紅綠藍瀘鏡運用與提高圖片亮度。
這一個程式bug找好久,因為我的邏輯跟作者寫的不同。最後我用自已的邏輯來使用function,才成功。
先說瀘鏡。與作者的code相比,我沒有setRGBData_unsafe( )與getRGBData_unsafe( ),我直接在ColorFilter功能裡完成了上述兩個功能的工作呼叫getRGBData( )與setRGBData( )來抓「三維陣列」與「由陣列建立新的 Bitmap」,然後更新掉image,就完成了。(另外,SHOW圖的方式也不同,作者用LoadImage( )影像公用程式,我寫不出來,所以用了另一個方法,這方法是在第一個範例裡學的。)(看紅字的code)
提高圖片的亮度與瀘鏡的計算類似,一樣一開始是做一個三維陣列,用三維陣列來跑每個pixel提高亮度,然後將三維陣列轉成Bitmap型態,再來把image更新掉,完成。
簡單的敘述執行順序:
點擊button->建立物件image->執行image.ColorFilter( )->用Bitmap把image包起來->
執行getRGBData( ),以取得存放pixel資訊的三維陣列->以此三維陣列執行瀘鏡的計算->
將三維陣列做成Bitmap型態的bimage->更新image->以視窗呈現處理後的圖片。

這一個程式bug找好久,因為我的邏輯跟作者寫的不同。最後我用自已的邏輯來使用function,才成功。
先說瀘鏡。與作者的code相比,我沒有setRGBData_unsafe( )與getRGBData_unsafe( ),我直接在ColorFilter功能裡完成了上述兩個功能的工作呼叫getRGBData( )與setRGBData( )來抓「三維陣列」與「由陣列建立新的 Bitmap」,然後更新掉image,就完成了。(另外,SHOW圖的方式也不同,作者用LoadImage( )影像公用程式,我寫不出來,所以用了另一個方法,這方法是在第一個範例裡學的。)(看紅字的code)
提高圖片的亮度與瀘鏡的計算類似,一樣一開始是做一個三維陣列,用三維陣列來跑每個pixel提高亮度,然後將三維陣列轉成Bitmap型態,再來把image更新掉,完成。
簡單的敘述執行順序:
點擊button->建立物件image->執行image.ColorFilter( )->用Bitmap把image包起來->
執行getRGBData( ),以取得存放pixel資訊的三維陣列->以此三維陣列執行瀘鏡的計算->
將三維陣列做成Bitmap型態的bimage->更新image->以視窗呈現處理後的圖片。

2012年5月3日 星期四
2012年5月2日 星期三
建立一個SHOW圖程式
這裡來寫一支SHOW圖程式,此程式在點擊BUTTON後會呼叫出一個視窗來顯示圖片。
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;
using System.Drawing.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ImageForm Myimage = new ImageForm();//建立秀圖物件
Myimage.Show();//顯示秀圖照片
}
class ImageForm : Form
{
Image image;
public ImageForm()
{
image = Image.FromFile(@"D:\MyPhoto\IMG_3841.JPG");
this.Text = @"D:\MyPhoto\IMG_3841.JP";
//載入影像的程式碼放這
}
protected override void OnPaint(PaintEventArgs e)
{
this.Height = 600;
this.Width = 800;
//顯示出影像的程式碼在這
e.Graphics.DrawImage(image, 0, 0, Width, Height);
}
}
}
}
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;
using System.Drawing.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ImageForm Myimage = new ImageForm();//建立秀圖物件
Myimage.Show();//顯示秀圖照片
}
class ImageForm : Form
{
Image image;
public ImageForm()
{
image = Image.FromFile(@"D:\MyPhoto\IMG_3841.JPG");
this.Text = @"D:\MyPhoto\IMG_3841.JP";
//載入影像的程式碼放這
}
protected override void OnPaint(PaintEventArgs e)
{
this.Height = 600;
this.Width = 800;
//顯示出影像的程式碼在這
e.Graphics.DrawImage(image, 0, 0, Width, Height);
}
}
}
}
「撰寫影像處理程式 難不倒我!!」的學習筆記
最近因為研究所的研究領域,要開始接受磨鍊了。
我選擇的研究領域是影像處理,未來要撰寫擴增實境的底層技術,其所使用的程式語言是C#,所以之後會有數篇有關用C#撰寫影像處理的學習筆記。
目前正在讀的是教授給的一篇由井民全老師所寫的「撰寫影像處理程式 難不倒我!!」,一起成長吧!
P.S.廣義上來講,所謂的擴增實境(augmented reality,AR)是將電腦的資訊疊合到現實世界,讓我們在正確的時間正確的地點取得<感官的>正確資訊 。看完下面這個影片就了解了:
我選擇的研究領域是影像處理,未來要撰寫擴增實境的底層技術,其所使用的程式語言是C#,所以之後會有數篇有關用C#撰寫影像處理的學習筆記。
目前正在讀的是教授給的一篇由井民全老師所寫的「撰寫影像處理程式 難不倒我!!」,一起成長吧!
P.S.廣義上來講,所謂的擴增實境(augmented reality,AR)是將電腦的資訊疊合到現實世界,讓我們在正確的時間正確的地點取得<感官的>正確資訊 。看完下面這個影片就了解了:
訂閱:
文章 (Atom)








