顯示具有 97360596 黃俊傑 標籤的文章。 顯示所有文章
顯示具有 97360596 黃俊傑 標籤的文章。 顯示所有文章

2010年1月16日 星期六

HW7

這次作業要讓影音檔至少有放大聲放小聲的功能,老師很直覺的告訴我們將讀出來的資料/2再寫回去就變小聲了,但實際操作後發現fwrite這功能真的不太會用,而且也不太清楚要讀多少byte出來和用多少byte寫入,直覺是讀一個byte/2啦,但fwrite還不能成功所以不到實際上是如何...所以這次作業無法如期繳交了 不過我在寒假會把這份作業寫完再來改Blog的~~(這不是要求加分!!) 現在是因為要趕在12點以前PO出文章 ... 祝大家寒假愉快囉!!!

HW5

其實打這次程式真的很累,不過其實也是自作自受,因為當初這堂課我把他翹掉窩在圖書館讀工數,結果沒上課的心理作祟作業也懶得去做,只稍微試了老師PO的第一版範例程式弄了半小時就放棄了,後來也沒時間管HW5,終於今天忙完期末考和專題報告花了一整個晚上寫HW5,還發現原來老師的範例程式老早就改版了,好寫很多!
不過我拿到改版的程式碼把一些元件拉完之後還是發現一堆錯誤,剛開始卡最久的大概是crPalette[i].bRed=0 ,我一直搞不懂bRed是怎麼去定義的,先去參考了之前灰階的調色盤發現沒幫助,決定先找找看Blog上其他同學有沒有碰到類似問題,其實大部分同學的hw5我都有稍微看過,發現大家還滿神的...原來只要稍微改一下元件的名稱然後用sort就行了?
不過終於發現有實際做的同學有跟我一樣的問題,參考了簡呈恩的方法後終於知道還要自己去一些定義結構才能使用老師的程式碼。
先把Label拉一拉和定義一些未定義的變數後,終於讓大部分的程式碼都可以跑,我才慢慢看每段程式碼,發現讀標頭檔那段有些我實在看不懂,類似 bCR=bCR >> 5; bCR=bCR+1; 這種 >>是什麼意思呢??
後來卡最久的其實是排序,因為看到老師有定義 float fLuminance[256]; 這變數來放色彩亮度,我直覺用這個來當做色彩亮度比較然後排序就可以了,沒想到怎麼排都不對,後來想到要排256次於是很開心設了迴圈馬上跑跑看,結果還是一樣...
不過很扯的是,我用了老師另外定義的crSortedPelette(拿來複製原本crPelette的RGB)  
然後用(crSortedPelette[k].bRed+crSortedPelette[k].bGreen+crSortedPelette[k].bBlue)/3)來比較大小,這個我覺得不夠聰明的方法竟然就正確排序了? 老師設fLuminance還特地幫我們算出色彩亮度不就要方便拿來比較亮度嗎?
結果發現是我自己比較亮度之後只swap了crSortedPalette忘記交換fLuminance(在打完上面後突然想到 哈哈...),試過之後就成功能使用fLuminance這方法了,好吧,所以老師幫我們寫的一個好用的fLuminance來比較亮度!! 哈哈~~
在全部寫完之後載入金龜的圖才發現顏色不對?? 後來才發現原來是RGB位置放錯,一定是老師故意改錯要讓我們改 哈!

接下來就是展現成品的時候了!!

(1)讀取金龜圖



(2)讀取小畫家轉成GIF的圖檔





上面這兩張明明是不同的圖檔但是為什麼色盤都一樣?? 難道是小畫家轉成GIF都用一樣的色盤嗎? 這是我自己的猜測~~

(3)讀取用專業轉圖軟體轉換的GIF檔


一切正常~完美!! 終於在凌晨三點做完HW5了~~ 開心阿!! 可以安心睡覺了!!!




2010年1月13日 星期三

HW8

  回顧這學期,最大的心得就是一開始對這課其實沒什麼太大期待,想說選修的課應該很好過,但這堂課我後來真的滿認真的,也學到許多東西。
  從最簡單的開圖檔我都覺得很無聊,但自從接觸fopen之後我才慢慢了解其實可以學習的東西很多,了解到一張圖的組成包括了標頭檔,記錄著一張圖的相關資訊,像是圖的長寬,是彩色或黑白之類的,很有趣,就像是我們的名片一樣,再往下就是整張圖的RGB資訊,讀出來後再把他們調色一點一點點出來就成了一張圖,原來這就是一張圖檔數位化的方法,讓我不得不佩服當初發明這一切的前人,了解到fopen後再去了解影像的一些特效就相當直覺,就像如何把一張圖由彩色變黑白,只要讓他能顯示的色彩總類只剩黑白就變成了黑白照片,老師都不用交就能自行想像其他特效"可能"的方法,讓我後半段慢慢進入狀況,也慢慢喜歡上這堂課。
  而老師教學得方式我真的覺得很特別,我有喜歡的部分也有希望老師改進的部分,先說喜歡的部分好了!其實我覺得現在大學生用"說"的都懂,但就是有些老師不願意溝通,讓學生越來越不喜歡上課,但這堂課老師花了許多時間跟我們溝通,可能有些人會覺得浪費時間,但對我來說這是一個彼此調整的機會,只要雙方配合當然會有雙贏的效果,而交作業的部分我也覺得很不錯,寫程式固然是最重要的能力,但是寫完程式還要對自己寫的程式說明每個人的能力可就不一樣了,我認為了解自己在打什麼程式也很重要,而且透過這種blog的方式,還可以藉由同學的作業來檢視自己的效果。不喜歡的部分大概就是上課的時候老師會要求我們自己去找資料,我知道老師是要我們透過自己去找尋資料的過程學習,但我認為這部分可以跟上課隔開,其實我上課還是希望老師可以多講一些東西,像fopen那時候要自己去找我真的完全沒興趣...只希望老師可以直接跟我們講,我認為搜尋資料的能力是老師的用心想在這堂課讓我們學習,但我認為老師可以在作業的部分加一個類似讀書心得的部分,規定去找一些資料,然後寫一個心得出來,那我可能會比較有興趣,因為上課去找資料效果可能也沒那麼好(我自己覺得= =)。
  這堂課真的讓我學到很多,也感謝老師的用心,我有感受到~哈哈!!

2010年1月8日 星期五

HW6


課程後半段時間開始介紹影音的部分,我大概了解到影音檔其實跟影像檔的組成方式有很多相像的地方,影音和影像都有許多不同的壓縮法,分門別派那樣,很有趣,而這個作業要我們讀取音樂檔的標頭,其實方法跟影像檔大同小異,但這次讀檔特別教了 unsigned int 這個方便的用法,不用像之前使用int陣列的變數來讀檔還需要自己計算才正確,unsigned int 佔4個byte,而且一次讀取4個byte之後電腦自己看得懂抓進來的數值,會自動幫你計算,也不用特別去轉換。

不過開始寫的時候發現維基百科給的標頭檔資料非常貧乏,之後自己去找了資料(上圖),照著給的資料把標頭檔一一讀進來,後來也問了老師 SampleRateByteRate 的差別,SampleRate是指每秒取樣的最大量,而ByteRate是實際上取樣的次數,ByteRate是SampleRate的四倍,那是因為音樂檔是雙聲道,所以要乘4倍

寫這次程式其實不難,但還是有碰到一些小問題。
問題(1). 標頭檔讀進來後,字串的部分莫名其妙連續串在一起

這個問題發現後,我找到一個簡單的方法解決,就是把變數設成全域變數,問題雖然解決了,但我還是不懂為什麼,於是去問老師,得到一個淺顯易懂的答案,原來設在Button裡他可能會把陣列設在同一排記憶體空間,所以當他讀到的時候會發現在記憶體空間裡接下去的也是字串,會一併把他列出來,所以解決方法也很簡單,只要當初設陣列的時候多設一個去放NULL,當他讀到的時候會發現接下來是NULL就不會繼續讀下去了。
問題(2).聲道一直讀錯
這問題我就不附圖了!聲道莫名的一直讀成千位數字,後來找到方法是一開始設變數的時候設成
unsigned int channelnumber={0}; 就正確了,很奇怪對吧?如果知道為什麼請答覆我,感謝~
再來就放上讀WAV音樂檔的標頭圖片,我把全部的標頭檔都讀出來囉!!
只是有些還是不太懂是代表什麼...
既然WAV和AVI都是用RIFF定義的,我也來讀讀看AVI檔,果然也成功了,而且我還做了撥放影音的功能,比較不一樣的是我使用Panel來播放,畫面很精緻吧!只是標頭檔果然還是有差別,很多地方都不符合,影音這部分還存在很多問題,想找到方法讓電影整個畫面都能撥出(自動設定大小),還有讀字幕檔的功能也不會,不過快期末了影音檔這部分有空再研究囉~~





2009年11月25日 星期三

HW4













其實上上星期上課的時候就懂用fopen去讀整張圖的RGB組成 然後印在image上的觀念


但是fseek(imBMP,offset,SEEK_SET)


和 Image1->Canvas->Pixels[j][i]=(TColor)RGB(R,G,B)

這兩行程式讓我很無法理解,嘗試很多不同方法才找到解法

(1)首先fseek那邊最大的問題出在offset的設置一開始我用for迴圈從54開始跑,每跑完一次就執行offset+=6;範圍設<=圖長*寬+54,因為我以為fread(bsize,1,6,imBMP)是代表一點RGB占掉6個位元組,但發現這完全不對,後來找到問題是因為圖片每一點的RGB組成是由3個位元組來定義,所以正確的設置for迴圈是要讀取到一點RGB後,offset+=3,範圍設<=圖的長*寬*3+54才正確,往後才可以正確讀取到下一點RGB

(2)而第二個問題是Pixels[j][i], i 和 j 的設定,我只知道BCB的點和VC的行列剛好顛倒,但實際去描點的時候發現圖會整張呈現非常詭異的情況











就只能說跟我想像的完全不一樣,老實說我也不懂問題出在哪,最後是看著圖想像程式碼的執行狀況去修改 i , j 的值 (這樣講好像有點豪洨..) 不過我真的不懂BCB她是怎麼描點的 希望這部分老師可以詳細講解 , 因為我設定的數值就是跟圖完全相反的方向(也就是跟我以為正常的方向相反)就好像是倒過來描的(不好意思 我不太會解釋)

這次程式可以說我是碰巧打出來的... 因為我也不太懂為什麼這樣會正確,另外還有一點,我描出來後圖會有色差 不知道在網路上PO圖看不看得出來,這點我也不知道怎麼解釋,希望老師可以就這幾個來解釋 感謝!!

-----------------------------------------------------------
09.11.26更新
-----------------------------------------------------------

今天上課的時候問完老師大概懂問題出在哪了!!


問題1.原來fread(bSize,1,6,imBMP)我根本讀錯了,RGB只有三個bytes,
改成fread(bSize,1,3,imBMP)就對囉!!也解決色差的問題 happy~~




問題2.為什麼圖顯示出來會整個顛倒?? 老師說圖檔的RGB會有兩種存放的方式 一種是從前面開始放,另一種是從後面開始放,所以不是描點的問題,是BMP檔她裡面本來就會有不同的存放方式


終於解決了昨天的兩個問題 不過今天發現另一個問題!!!





我讀取了三張圖檔 第一張最大(下面露出馬腳) 第二張中等覆蓋在第一張上面
第三張是左上的小紅傘
我嘗試過修改掉這個小缺點,我拉了一個Button 來做delete Image1的功能
按下去後圖檔確實會消失,但當我再次讀取圖檔的時候發生了下列的錯誤!!
然後指向Image1->Cavas->Pixels[i][j]....的這行程式碼(此為描點的程式碼)
希望老師或同學能告訴我問題出在哪,希望能解決圖檔重疊的問題

2009年11月5日 星期四

HW3















關於老師上課提到是不是因為大家對於fopen,fread,fseek這些指令比較沒興趣,我想提供我的意見,前兩個作業我確實比較有興趣,從開啟 圖片檔到可以轉灰階或者畫線那些,我覺得都是讓我打出來後會滿有成就感的東西,其實我原先也沒想到才上幾堂課就可以打出這些東西(其實也是因為BCB給的 元件很多)打完前兩個作業我想說可以學到像是照片模糊化或者轉換成不同風格(復古黑白.水彩畫.素描畫.色彩增強)之類的特效,然後對於 fopen,fread和fseek就真的比較沒興趣,可能之後跟影像有做更多的結合打出更多東西我會懂現在教這三個的用意吧,所以還是會好好學!
老師花了將近兩節課檢討這次交作業的情形,其實我覺得收穫滿多的,因為前兩個作業我頂多點自己朋友的文章來看,其的文章我倒是沒逐一看,而且這次我也知道自己也是隨隨便便就交了,
在課堂上看到有些人繳交作業的方式真的讓我很佩服,像我前兩個作業大概就是上傳一下,然後隨意想一下做作業時的想法就PO出來了,但有些同學真的很用心在做這件事情,感覺花了不少時間,所以我覺得我還有很多可以改善的地方~COOL!
結果第三節課的時候,看完別人作品還有聽老師講解之後,實作起來發現一點也不難,唯一碰到的問題就是dpi顯示出來之後值出現三千多(應該顯示72),剛好就問老師怎麼解決,才了解原先顯示的是每公尺所包含的像素點,而每吋是2.54公分,100/2.54=39.3...左右,所以把原本的值除以39.3就正確囉!!

2009年10月21日 星期三

HW2

















這次的作業也相當有趣,先讓我們了解影像在電腦上組成的原理
學會判斷幾位元的影像之後再搭配轉為灰階的作業,我覺得相當合適
不過原本以為做起來會很難,但只要懂影像組成與位元之間的關係後
再利用老師提供的公式(R+G+B)/3,其實相當容易做得出來


於是我想測試改變除數看看會變成怎樣


第一個測試(除2) 原先預測:大部分黑白會出現幾個彩色點

測試結果:與原先預測不一樣,顏色變淡出現幾個極黑點。




第二個測試(除4) 原先預測:顏色變淡



測試結果:與原先預測不一樣,顏色變黑。



因為看到第二個預測竟然是變黑,一氣之下除10!!





第三個測試(除10) 原先預測:給我變超黑!!!


預測結果:跟我預測的一樣變超黑 哈哈~~

由測試發現原來除數越大整張圖越偏向黑色,除數越小偏白,但會出現幾個極黑點!

2009年10月6日 星期二

HW1









這次程式非常有趣又很有新鮮感,沒想到以前用繪圖軟體的功能自己也能動手寫出來,這次也發現BCB的好處所在,BCB提供使用者非常多的物件,不用再花時間自己一個物件一個物件拼湊起來,但另一點則是上課的時候老師教得很快,其實我原本程式在上課已經打好八九成,ColorDialog還有Pen->Color那部分的程式只在上課聽但來不及打,回家後發現工具書也找不太到,後來是上網查才查到,希望可以的話能在Digital Media Class 寫更詳細的程式碼在BLOG,補充一點,我有看到 week 3 那篇文章,我有參考裡面的程式碼,但是不太詳細,這是我這次寫程式遭遇的困難。

97360596 資工二乙 黃俊傑