2015年1月4日 星期日

資工三乙 01360786 張凱崴 HW3

第二次程式作業


一開始介面我分別用2個pagecontrol
一個用來呈現原圖(Image1)及修改之後的圖(Image2)
另一個則用來輸入階層的上下界(ArtworkInput ArtworkOutput)及
Curve曲線圖(Image3)


下圖為一開始執行畫面


Outout = OutputMin + (Input - InputMin) * ((OutputMax-OutputMin) / (InputMax-InputMin))
上列程式碼是輸出公式
在第2個pagecontrol的Level裡面分別輸入InputMin,InputMax,OutputMin,OutputMax
並按下執行鍵
在第一個pagecontrol修改圖裡就會出現挑整後的圖


此圖則是進行色階調整後畫面


當使用滑鼠點擊並移動曲線就可以改變亮度
在第2個pagecontrol的Curve是用MouseDown取得X,Y值
並使用if及for迴圈
若大於255值就給255
若小於0值就給0
並將圖依然在修改之後的圖(Image2)呈現

以下2張圖光線調整後之畫面


感謝朋友的指導,不然一開始還真的有點不知所措
無法下手還好他找老師的講義定講解後
我就明白該如何寫了


附上程式碼:https://www.dropbox.com/s/0kszvjmmwzzgct9/Unit1.cpp?dl=0


資工三乙 01360451 黃詺皓 HW03

第三次作業
實體圖例:
將圖片讀入程式
將輸入、輸出的上、下界都作定值改變,令圖片的色階產生變化
使用調整曲線的方式來做到圖片色階的變化

程式碼 :https://www.dropbox.com/s/i1qg723gin3dset/textHow.cpp?dl=0

心得:這次的作業只要是求出曲線的方程式,還有要如何顯示曲線變化,
這次作業比上次還多使用了其他元件,像是Edit用來作輸入使用、
還有ImageOnMouseDown用來抓取點在Image上的X和Y值
還有要注意的是抓出來的值並不是想像中的值
而是0與255是顛倒過來的,所以需要花點時間想想

99360816 張育瑋 HW5


YUV色彩圖
Y值預設為128

使用投影片上MSDN的轉換公式
其中clip似乎C++函式庫沒有
所以是自己另外寫的
程式只是傳一整數值進去
若大於255回傳255
小於0回傳0
其他則回傳傳入的原始值

===========================================================

接下來調整圖片色調就不知道寫的對不對了
我的做法是先抓滑鼠點到那個像素的RGB值
再來以這3個值作為輸出值的上限(作業3的公式)
各作一次色階調整
最後可以得到色調改變為指定顏色的圖片

這邊色階調整是將輸出值的上限
分次改為指定的RGB的值
分別作"3次"
所以程式很冗長
應該有更好的寫法

選取藍色後圖片的色調改變

改變Y值可以得到新的YUV圖

點選粉紅色改變色調

結果圖

===========================================================

1/09更新

跑去看別人的程式碼
當時上課睡著沒聽到正確的做法
原來是先以原圖的RGB轉成亮度(Y值)
接著以該Y值及滑鼠點選該點的U, V值轉出新的RGB值
最後指定給新圖就好了
這樣改完程式碼短很多

===========================================================


99360816 張育瑋 HW4

這次程式寫的4個濾波器和胡椒鹽雜訊

胡椒鹽雜訊

在載入圖片加上胡椒鹽雜訊後
程式是參考這裡的MATLAB程式碼寫出來的

演算法會產生一個用亂數給定0~255之間的值的陣列
接著以此作為遮罩(是遮罩吧?)
並依iWhite和iBlack的設定值決定迴圈跑到的像素是否改成白點或黑點

===============================================================

平滑濾波器

一次讀取9個像素
不加任何權重
全部RGB色彩值相加後除以9
再將平均值指定給中間的像素

執行前

執行後

===============================================================

有加權的平滑濾波器

中間像素及其上下左右的像素值都加上權重
這樣中間的像素值的影響就會加重
RGB值相加後同樣取平均
再指定給中間的像素

執行前

執行後
和沒有加權重的比起來稍為清楚一點

===============================================================

中值濾波器

一次讀取9個像素
排序後取中間值
再存至中間像素

取中間值的函數
使用插入排序法排序

執行前

執行後

===============================================================

銳化空間濾波器

數學的部分聽不太懂...
所以就直接用結論得出的遮罩寫程式了
程式寫法和前面的平滑濾波器一樣
只是將權重更改為上圖而已

執行前

執行後

===============================================================

2014年12月31日 星期三

00360416 周棟彥 HW02


此次作業主要是先分析圖中RGB的個數,之後利用畫筆畫出CDF與PDF的值

開啟圖片

執行CDF結果


執行PDF結果


本次作業心得:
本次作業中比較難的部份應該是在找出圖片中RGB的值並將其存到陣列之中,找到後就可以利用畫筆將其值畫出。


學到的東西:
計算圖片中RGB的值
畫出CDF圖
劃出PDF圖
圖片的開啟

程式碼(內有註解):https://www.dropbox.com/s/nfnlvkh1orfczpf/%E5%BD%B1%E5%83%8F%E8%99%95%E7%90%86_HW2%E7%A8%8B%E5%BC%8F%E7%A2%BC.txt?dl=0


2014年12月30日 星期二

資工三甲 01363116 彭宇壕 HW3

Level and Curve


Level:此功能能改變圖片的亮度及對比,輸入四個數值 
InputMax,InputMin,OutputMax,OutputMin
當四個數值有變動就重新畫圖顯示
iOutput = iOutputMin + (iInput - iInputMin) * ((iOutputMax - iOutputMin)/(iInputMax - iInputMin));




-------------------------------------------------------------------------------------------------------------


Curve:一樣也是處理圖片的亮度和對比,和Level不同的是Level是給定一定範圍,利用四個數值
計算並畫出圖來,而Curve是在曲線上點一點,利用曲線公式帶入一點計算後畫出的圖








2014年12月28日 星期日

資工三乙 01360476 石皓宇 HW3

作業三    先附上程式碼 :
 https://www.dropbox.com/s/ruvk7rj69tkvd2n/hw3_Unit.cpp?dl=0

        在做這作業的時候,我把Level跟Curve介面設計在一起以便操作,在Level界面可以手動輸入輸入及輸出的上界及下界值,按下"apply"便會在"修改後"旁的image框中顯示出修改後的圖片,
輸出公式如下:
myOutput = myOutputMin + (myInput - myInputMin) * ((myOutputMax - myOutputMin)/(myInputMax - myInputMin));

(a) 以Level調整完色階的結果

        接下來是Curve介面,用Image3MouseDown()方法取得Image3的X,Y值,經由運算結果,用if判斷式,如果curve[i]大於255就給255,小於0就給0,最後把圖同樣繪在"修改後"的Image框裡.

(b) 用Curve調整使圖片便亮

(c) 用Curve調整使圖片便暗

        這次的作業不算太難,參照公式後再努力一下就寫出來囉!還沒寫的同學趕快動手做囉!

2014年12月25日 星期四

資工三乙_01360221_陳鈺培_HW3

此次作業是使用Level和Curve

如何生出曲線和判定真的對自己是一大挑戰
看著原圖片隨著這些發生變化真的很好玩
但如果沒有老師的講解真的會更困難
主要還是願意親自動腦吧

原圖片


 將圖片放入


 調整變亮


調整變暗

程式碼:https://www.dropbox.com/s/iibkmd24a4pvlpo/10741130_890299157655833_177389456_n.cpp?dl=0

01360955 魏智信 HW2

 
作業:Histogram
 
程式碼網址:
 
此次作業主要用是對 Bitmap 的每一 Pixel 作色彩值分佈計算
 
而比較麻煩的是繪出色彩的分佈圖形
主要用到 Canvas、Pen、MoveTo、LineTo 等函數和物件
 
下兩張圖是第一次成功輸出後的結果:
 
 
 
 
 
 
而後我嘗試著把三張圖合併,不外乎就是把 RGB 三色做 OR 運算即可
 
以下是 RGB 三色結果:
 
 
 
 
 

2014年12月22日 星期一

01360531_HW2

https://www.dropbox.com/s/e5foh6dwm8pz8vq/Unit1.cpp?dl=0
這個作業最困難的部分在於抓到圖片的像素BGR
其他的還有覺得應該很多的顏色卻顯示不多感到有點詭異