Đề tài Xử lý và chọn mẫu màu cho công đoạn in thử một mẫu in hoa tại nhà máy dệt Tân Tiến

Trong phạm vi đề tài này, với những mục đích nêu trên, chúng ta nghiên cứu cơ sở lý thuyết về Kỹ thuật đồ họa cũng như cơ sở lý thuyết về CSDL để có thể áp dụng giải quyết vấn đề một cách hiệu quả Luận văn được xây dựng với 43 trang,chia làm 3 chương, và 5 mục .là một bài có chất lượng tốt được hội đồng bảo vệ đánh giá cao

doc55 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2542 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Xử lý và chọn mẫu màu cho công đoạn in thử một mẫu in hoa tại nhà máy dệt Tân Tiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ñaàu), coøn vuøng trong suoát seõ cho aùnh saùng ñi qua vaø lôùp keo vuøng aùnh saùng ñi qua seõ hoùa cöùng baùm chaët vaøo löôùi phaúng. Sau ñoù röûa löôùi phaúng qua nöôùc vuøng keo chöa hoùa cöùng seõ troâi ñi, nhö vaäp taám khung löôùi phaúng seõ trôû thaønh moät aâm baûn cuûa Film slide. Khuoân löôùi phaúng sau ñoù ñöôïc chuyeån cho Nhaân vieân phoøng thí nghieäm tieán haønh choïn maøu cho maãu hoa (coâng vieäc naøy maát raát nhieàu thôøi gian, ñoøi hoûi söï nhaïy caûm maøu saéc cuûa ngöôøi thöïc hieän choïn maøu in thöû vaø tieâu toán löôïng vaûi in thöû khoâng nhoû). Moät toå hôïp 6 maøu treân taïo thaønh moät Maãu in goïi laø Colorway, moãi maãu hoa coù theå laøm thaønh nhieàu Colorway cho khaùch haøng löïa choïn. (Taát caû caùc coâng ñoaïn in thöû phaûi ñaûm baûo quy trình coâng ngheä nhö in chính thöùc – bao goàm : in, haáp, giaët taåy ñeå ñaûm baûo söï ñoàng ñeàu maøu saéc giöõa in thöû vaø in chính thöùc sau naøy). Sau khi choïn maøu vaø in thöû xong maãu hoa treân, maãu hoa ñöôïc gôûi cho khaùch haøng löïa choïn, neáu khaùch haøng ñoàng yù thì nhaø maùy cho tieán haønh saûn xuaát haøng loaït, neáu khoâng coù theå phaûi tieán haønh choïn laïi maøu. Treân ñaây toâi xin giôùi thieäu sô veà baøi toaùn vaø vaán ñeà caàn giaûi quyeát ôû ñaây laø vieäc ñöa caùc lôùp phim (Layer slide) vaøo maùy tính sao cho caùc baûn layer truøng khít leân nhau vaø tieán haønh choïn maøu treân töøng lôùp ñeå choïn maøu öng yù nhaát. Töø caùc maøu ñaõ ñöôïc choïn maùy tính tìm trong cô sôû döõ lieäu veà maøu saéc vaø ñöa ra caùc thaønh phaàn thuoác nhuoäm caàn thieát taïo neân maøu ñaõ choïn. (trong thöïc teá, nhaø maùy ñaõ tìm hieåu daây chuyeàn coâng ngheä ñöôïc tin hoïc hoùa cuûa Haõng Stock Brabant - Haø Lan tuy nhieân do giaù thaønh quaù ñaét neân chöa theå nhaäp ñöôïc daây chuyeàn treân) vì vaäy toâi chæ mong muoán goùp moät phaàn nhoû trong vieäc hôïp lyù hoùa quaù trình saûn xuaát cuûa nhaø maùy. PHAÀN II : CAÙC PHEÙP BIEÁN ÑOÅI ÑEÅ CAÙC LÔÙP FILM TRUØNG KHÍT NHAU I. Caùc khaùi nieäm toång quan cuûa kyõ thuaät ñoà hoaï maùy tính (Computer Graphics): Kyõ thuaät ñoà hoaï maùy tính : Kyõ thuaät ñoà hoaï maùy tính coù theå ñònh nghóa nhö moät lónh vöïc cuûa coâng ngheä thoâng tin maø ôû ñoù nghieân cöùu, xaây döïng vaø taäp hôïp caùc coâng cuï (moâ hình lyù thuyeát vaø phaàn meàm) khaùc nhau ñeå kieán taïo, xaây döïng, löu tröõ vaø xöû lyù caùc moâ hình (model) vaø hình aûnh (image) cuûa ñoái töôïng, söï vaät hieän töôïng khaùc nhau trong cuoäc soáng, saûn xuaát vaø nghieân cöùu. Caùc moâ hình vaø hình aûnh naøy coù theå laø caùc keát quaû thu ñöôïc töø nhöõng lónh vöïc khaùc nhau cuûa raát nhieàu ngaønh khoa hoïc (Vaät lyù, toaùn hoïc, thieân vaên hoïc v..v) vaø bao truøm raát nhieàu theå loaïi vaø daïng phong phuù . Caùc kyõ thuaät ñoà hoaï : Ngaøy nay soá löôïng caùc heä thoáng söû duïng kyõ thuaät ñoà hoaï töông taùc ñaõ trôû neân raát lôùn, ngaøy caøng nhieàu vaø caøng trôû neân ña daïng hôn, phong phuù hôn. Tuy vaäy caên cöù vaøo phöông phaùp xöû lyù caùc döõ lieäu trong heä thoáng maø ngöôøi ta phaân bieät ra hai heä thoáng ñoà hoaï : Kyõ thuaät ñoà hoaï ñieåm (Sampled – Based Graphics) vaø Kyõ thuaät ñoà hoaï vectô (Geometry – Based Graphics). Kyõ thuaät ñoà hoaï ñieåm : Nguyeân lyù xaây döïng caùc moâ hình vaø hình aûnh trong kyõ thuaät ñoà hoaï ñieåm nhö sau : caùc moâ hình, hình aûnh cuûa caùc ñoái töôïng ñöôïc hieän thò thoâng qua töøng pixel (Töøng maãu rôøi raïc). Trong kyõ thuaät naøy chuùng ta coù theå taïo ra, thay ñoåi thuoäc tính, xoaù ñi töøng pixel cuûa moâ hình vaø hình aûnh caùc ñoái töôïng. Caùc moâ hình hình aûnh ñöôïc hieån thò nhö moät löôùi ñieåm (grid) caùc pixel rôøi raïc, töøng pixel ñeàu coù vò trí xaùc ñònh, ñöôïc hieån thò vôùi moät giaù trò rôøi raïc (soá nguyeân) caùc thoâng soá hieån thò ví duï nhö maøu saéc hoaëc ñoä saùng. Taäp hôïp taát caû caùc pixel cuûa grid cho chuùng ta moâ hình, hình aûnh ñoái töôïng maø chuùng ta muoán hieån thò ñeå nghieân cöùu hoaëc xaây döïng neân. Coù hai phöông phaùp ñeå taïo ra caùc pixel naøy : Phöông phaùp thöù nhaát laø duøng phaàn meàm ñeå veõ tröïc tieáp töøng pixel moät, döïa treân caùc lyù thuyeát moâ phoûng ñeå xaây döïng neân caùc ñoái töôïng hoaëc hình aûnh thöïc cuûa söï vaät. Phöông phaùp thöù hai laø rôøi raïc hoaù (soá hoaù ) hình aûnh thöïc cuûa ñoái töôïng sau ñoù ta coù theå söûa ñoåi (image editing) hoaëc xöû lyù (image processing) maûng caùc pixel thu ñöôïc theo phöông phaùp khaùc nhau ñeå thu ñöôïc hình aûnh ñaëc tröng cuûa ñoái töôïng. Kyõ thuaät ñoà hoaï vectô : Nguyeân lyù xaây döïng caùc moâ hình vaø hình aûnh trong kyõ thuaät ñoà hoaï vector nhö sau : tröôùc heát ngöôøi ta xaây döïng moâ hình hình hoïc (Geometrical model) cho moâ hình hoaëc hình aûnh cuûa ñoái töôïng, xaùc ñònh thuoäc tính cuûa moâ hình hình hoïc naøy, sau ñoù döïa treân moâ hình hình hoïc naøy seõ thöïc hieän qua trình toâ traùt (rendering) ñeå hieån thò töøng ñieåm cuûa moâ hình, hình aûnh thöïc cuûa ñoái töôïng. ÔÛ kyõ thuaät ñoà hoaï naøy chuùng ta chæ löu tröõ moâ taû toaùn hoïc cuûa caùc thaønh phaàn trong moâ hình hình hoïc cuøng vôùi caùc thuoäc tính töông öùng cuûa noù maø khoâng löu laïi toaøn boä pixel cuûa hình aûnh toâ traùt (rendering) ñöôïc . Caùc thaønh phaàn naøy ñöôïc moâ taû trong moâ hình hình hoïc cuûa ñoái töôïng ñöôïc goïi laø thöïc theå cô sôû hình hoïc cuûa moâ hình hình hoïc. Sau ñoù hình aûnh seõ ñöôïc xaây döïng töø caùc thaønh phaàn cuûa moâ hình hình hoïc, töùc laø chuùng ta seõ thöïc hieän quaù trình toâ traùt theo ñieåm nhöng nhöõng pixel naøy khoâng ñöôïc löu giöõ laïi nhö moät phaàn cuûa moâ hình. Nhö theá hình aûnh coù theå ñöôïc toâ traùt (rndering) töø nhieàu ñieåm nhìn vaø goùc nhìn khaùc nhau döïa treân cuøng moät moâ hình maãu. So saùnh kyõ thuaät ñoà hoaï ñieåm vaø kyõ thuaät ñoà hoaï vectô : Trong kyõ thuaät ñoà hoaï ñieåm, hình aûnh vaø moâ hình cuûa caùc vaät theå ñöôïc ñònh nghóa bôûi caùc ñieåm cuûa grid, khi ñoù chuùng ta coù theå deã daøng thay ñoåi thuoäc tính cuûa caùc ñieåm ñeå thay ñoåi töøng phaàn hoaïc töøng vuøng cuûa hình aûnh. Trong kyõ thuaät ñoà hoaï ñieåm chuùng ta coù theå deã daøng copy ñöôïc caùc pixel töø moät hình aûnh naøy sang hình aûnh khaùc. Trong kyõ thuaät ñoà hoaï vector chuùng ta khoâng thay ñoåi thuoäc tính cuûa töøng ñieåm tröïc tieáp maø ta coù theå xöû lyù vôùi töøng thaønh phaàn hình hoäc cô sôû cuûa noù, sau ñoù laïi thöïc hieän quaù trình toâ traùt vaø hieån thò. Trong kyõ thuaät ñoà hoaï vector chuùng ta coù theå quan saùt hình aûnh vaø moâ hình cuûa hình aûnh vaø söï vaät ôû nhieàu goùc ñoä khaùc nhau moät caùch deã daøng baèng caùch thay ñoåi ñieåm nhìn vaø goùc nhìn. II. Pheùp bieán ñoåi ñeå caùc lôùp Film truøng khít : Taïo lôùp phim (Layer slide) : Nhö giôùi thieäu treân, töø maãu hoa ñöôïc thieát keá caàn phaûi taùch thaønh caùc lôùp phim theo töøng maøu cuûa maãu thieát keá Ví duï : Film Slide Ñeå ñöa ñöôïc taám Film Slide vaøo maùy tính ta söû duïng maùy queùt (Scan) queùt film vaøo maùy döôùi daïng file traéng ñen (.Wmf, .BMP, JPEG,…) sau ñoù ñöa vaøo chöông trình xöû lyù . ÔÛ ñaây ñeå taïo thaønh töøng lôùp Slide trong chöông trình, moãi moät Slide ñöôïc queùt vaøo ta vieát thuû tuïc queùt ñieåm aûnh, neáu ñieåm aûnh maøu ñen löu toïa ñoä vaøo maûng 2 chieàu . Caáu truùc maûng 2 chieàu nhö sau : Dim A() as Integer (maûng ñoäng) Soá phaàn töû Rap1 X Rap2 X X1 X2 ……… Xn-1 Xn Lôùp Rap1 Y Rap2 Y Y1 Y2 ……… Yn-1 Yn Trong ñoù : - Soá phaàn töû : Laø toång soá phaàn töû (n+3) caàn löu cuûa maûng. - Lôùp : Lôùp Slide. - Rap1 X, Rap1 Y : Ñieåm Rappo thöù 1 treân taám Slide (Ngöôøi söû duïng chöông trình choïn) - Rap2 X, Rap2 Y : Ñieåm Rappo thöù 2 treân taám Slide (Ngöôøi söû duïng chöông trình choïn) - (X1,Y1), (X2,Y2) … (Xn,Yn) : Toïa ñoä ñieåm aûnh Slide. Ñieåm Rappo1 vaø Rappo2 duøng ñeå laøm chuaån ñieàu chænh ñeå caùc lôùp truøng khít hoïa tieát vôùi nhau. Caùc pheùp toaùn ñieàu chænh truøng khít caùc lôùp Slide : Caùc ñoái töôïng phaúng trong toïa ñoä 2 chieàu ñöôïc moâ taû nhö taäp caùc ñieåm phaúng. Caùc ñieåm ñöôïc bieåu dieãn thoâng qua toïa ñoä cuûa chuùng vieát döôùi daïng ma traän hay coøn goïi laø caùc vector vò trí. Coù 2 phöông phaùp bieåu dieãn caùc ma traän maø pheùp bieán ñoåi ñoà hoaï treân ñoù laø nhö nhau bao goàm phöông phaùp bieåu dieãn toïa ñoä theo ma traän 1 haøng 2 coät vaø ma traän 2 haøng 1 coät. Trong phaàn naøy chuùng ta seõ bieåu dieãn toaï ñoä theo ma traän haøng ñeå moâ taû toïa ñoä caùc ñieåm. x y vaø [ x y ] Taäp caùc ñieåm ñöôïc löu tröõ trong maùy tính döôùi daïng caùc ma traän hay chuoãi ñieåm maø vò trí cuûa chuùng quyeát ñònh hình daïng cuûa ñöôøng thaúng, ñöôøng cong hay aûnh seõ deã daøng kieåm soaùt thoâng qua caùc pheùp bieán ñoåi. Pheùp bieán ñoåi ñoà hoaï ñöôïc moâ taû döôùi daïng caùc ma traän töông öùng cho pheùp theå hieän caùc söï bieán ñoåi toaï ñoä cuûa caùc ñieåm qua caùc pheùp toaùn nhaân ma traän. Ñieàu ñoù taïo thuaän lôïi cho ngöôøi söû duïng hình dung cuõng nhö thao taùc vôùi caùc ñoái töôïng hình hoïc moät caùch deã daøng vaø ñoù cuõng laø moät trong nhöõng tính naêng maïnh cuûa ñoà hoaï maùy tính. Pheùp bieán ñoåi vò trí ñieåm : Giaû söû ta coù ñieåm P(x,y) trong maët phaúng vôùi [ x y ] laø vecto vò trí ñöôïc kyù hieäu baèng [X] vaø ma traän 2x2 [T] laø ma traän bieán ñoåi vôùi Ñieåm P’ qua pheùp bieán ñoåi coù giaù trò { x’ y’ ] vôùi phöông trình sau : Theo phöông trình treân giaù trò töông öùng cuûa x’ = ax + cy vaø y’ = bx + dy, khaûo saùt ma traän bieán ñoåi [T] vôùi caùc tham soá ta coù : Pheùp bieán ñoåi baát bieán : Vôùi pheùp bieán ñoåi tònh tieán thì a = d = 1 vaø b = c = 0 khi ñoù ma traän bieán ñoåi coù daïng : Khi ñoù ñieåm P’ qua pheùp bieán ñoåi tònh tieán coù giaù trò [ x’ y’ ] vôùi phöông trình sau : Vôùi pheùp bieán ñoåi treân ta coù : x’ = x + dx y’ = y + dy Trong ñoù : - dx heä soá tònh tieán theo x - dy heä soá tònh tieán theo y Pheùp bieán ñoåi tyû leä : Xeùt tröôøng hôïp d = 1 vaø b = c = 0 phöông trình ñöôïc vieát laïi : Vôùi keát quaû thu ñöôïc x’= ax vaø yù = y, ñieåm P’ dòch chuyeån theo truïc x vôùi tyû leä a xaùc ñònh. P P’ P’ P 0 1 2 3 0 1 2 3 x,x’ Vôùi tröôøng hôïp b = c = 0 vaø a, d laø caùc giaù trò baát kyø thì phöông trình seõ môû roäng vaø thu ñöôïc Pheùp bieán ñoåi tæ leä ñöôïc thöïc hieän treân caû hai truïc toïa ñoä x vaø y. Neáu x # y thì tyû leä treân hai truïc khoâng baèng nhau. Neáu a = d > 1 thì pheùp bieán ñoåi thu ñöôïc laø pheùp phoùng to vaø ngöôïc laïi vôùi 0 < a = d < 1 thì pheùp bieán ñoåi töông öùng laø thu nhoû. Neáu moät trong hai giaù trò a hoaëc d = 1 ta seõ coù pheùp laáy ñoái xöùng treân caùc truïc töông öùng, vaø khi caû hai a vaø d ñeáu baèng –1 thì pheùp bieán ñoåi thu ñöôïc seõ laø pheùp laáy ñoái xöùng qua goác toïa ñoä. Pheùp bieán daïng : Khi a vaø d = 1 baát bieán thì toïa ñoä cuûa P’ phuï thuoäc vaøo söï thay ñoåi cuûa b vaø c, Giaû söû vôùi c = 0. Ta coù : Ñieåm P’ thu ñöôïc seõ khoâng thay ñoåi giaù trò toïa ñoä x coøn giaù trò yù bieán ñoåi khoâng chæ theo b maø coøn phuï thuoäc vaøo caû x. Vaø ñieàu ñoù ngöôïc laïi khi chuùng ta thay ñoåi vôùi a = d = 1; b= 0; hieäu öùng bieán daïng seõ xaûy ra theo truïc y. Ñieåm goác toïa ñoä seõ baát bieán qua moïi pheùp bieán ñoåi. Ñieàu ñoù ñöôïc chöùng minh qua phöông trình sau vôùi ñieåm P = [0 0] truøng vôùi goác toïa ñoä. P’ x’ = cy + x Y=bx+y Cy P P’ P bx 0 1 2 3 0 1 2 3 Pheùp bieán daïng theo truïc y Pheùp bieán daïng theo truïc x Pheùp bieán ñoåi toång hôïp : Phöông phaùp bieán ñoåi söû duïng pheùp nhaân ma traän vôùi toïa ñoä ñieåm thoâng qua caùc vectô vò trí thaät söï hieäu quaû vaø ñem laïi coâng cuï vaø ñem laïi coâng cuï maïnh veà ñoà hoïa cho ngöôøi söû duïng. Tuy nhieân nhöõng thao taùc thöôøng caàn khoâng chæ moät maø raát nhieàu caùc pheùp bieán ñoåi khaùc nhau. Pheùp hoaùn vò khi nhaân ma traän khoâng ñöôïc cho pheùp thöïc hieän nhöng khaû naêng toå hôïp caùc pheùp nhaân laïi cho pheùp taïo ra moät ma traän bieán ñoåi duy nhaát. Ñieàu ñoù laøm giaûm bôùt ñöôïc khoái löôïng ñaùng keå caùc pheùp tính toaùn trong quaù trình bieán ñoåi, laøm taêng toác ñaùng keå caùc chöông trình öùng duïng vaø taïo ñieàu kieän cho vieäc quaûn lyù caùc bieán ñoåi trong öùng duïng. Giaû söû ta coù ñieåm P vôùi toïa ñoä [X] = [x y] vaø 2 pheùp bieán ñoåi laø [T1], [T2] vôùi Quay ñieåm P quanh goác toïa ñoä moät goùc 900 vaø Laáy ñoái xöùng qua goác toïa ñoä Ta coù : Laø toïa ñoä [X’] cuûa P’ qua pheùp bieán ñoåi [T1] vaø Laø toïa ñoä cuûa P’ qua [T2] Giaû söû ta coù [T3] laø ma traän bieán ñoåi toång hôïp cuûa hai ma traän [T1] vaø [T2], giaù trò sau khi bieán ñoåi [x y] qua [T3] thu ñöôïc coù daïng : Ñieàu ñoù ñuùng vôùi moïi pheùp bieán ñoåi [T1] vaø [T2] chuùng ta coù theå noùi vieäc bieán ñoåi qua nhieàu ma traän thaønh phaàn seõ töông ñöông vôùi pheùp bieán ñoåi qua ma traän toång hôïp töø caùc pheùp bieán ñoåi ñoù. Pheùp Quay : Giaû söû ta coù ñieåm P vôùi toïa ñoä ban ñaàu laø (x, y) hay töông öùng vôùi ma traän [ x y ] qua phöông phaùp bieåu dieãn vector ( hình döôùi ) laøm thaønh vôùi truïc X moät goùc a. Cho P quay quanh goác toïa ñoä O moät goùc b coù baùn kính töông öùng laø r thu ñöôïc ñieåm P’. Qua hình veõ giaù trò P vaø P’ coù daïng : P = [ x y ] = [ r.cosa r.sina] (1) P’ = [ x’ y’ ] = [ r.cos(a+b) r.sin(a+b)] (2) Phöông trình (2) qua pheùp bieán ñoåi löôïng giaùc ñöôïc ñöa veà daïng : P’ = [ x’ y’ ] = [ r(cosa. cosb - sina.sinb) r(cosa. sinb + sina.cosb)] (3) Töø (1) vaø (3) ta coù : P’ = [ x’ y’ ] = [x. cosb - y.sinb x.sinb + y.cosb] Hay töông ñöông vôùi : X’ = x. cosb - y.sinb Y’ = x.sinb + y.cosb Pheùp bieán ñoåi thoâng qua caùch vieát ma traän coù daïng sau : [X’] = [X].[T] = [x’ y’] = [x y].[x. cosb - y.sinb x.sinb + y.cosb] Nhö vaäy ma traän bieán ñoåi toång quaùt [T] khi quay moät ñieåm quanh goác toïa ñoä döôùi moät goùc a baät kyø coù daïng : Giaù trò döông thu ñöôïc khi goùc quay ngöôïc chieàu kim ñoàng hoà. Giaû söû khi quay P moät goùc -a thì ma traän [T] coù theå tính ñöôïc nhö sau : Töø caùc pheùp bieán ñoåi treân ñöa vaøo baøi toaùn ñang xaây döïng ta caàn choïn treân moãi taám Film Slide hai ñieåm chuaån (Rappo1 vaø Rappo2), sau ñoù ta choïn taám Film Slide ñaàu tieân (Goïi laø lôùp 0) hai ñieåm chuaån ñaùnh daáu “+” sau ñoù taát caû caùc taám Film Slide sau cuõng ñeàu ñaùnh daáu “+” truøng vôùi taám ñaàu tieân. Nhö vaäy sau khi queùt vaøo maùy nhieäm vuï cuûa ta laø phaûi duøng 2 pheùp bieán ñoåi treân ñeå ñöa caùc ñieåm Rappo cuûa caùc taám Film Slide sau (Töø lôùp 1 trôû ñi) truøng vôùi 2 ñieåm Rappo cuûa lôùp 0 : baèng caùch dòch ñieåm Rappo1 cuûa caùc lôùp 1,2, … truøng vôùi ñieåm rappo1 cuûa lôùp 0, sau ñoù xoay ñieåm Rappo2 quanh ñieåm Rappo1 ñeå truøng vôùi ñieåm Rappo2 cuûa lôùp 0 nhö vaäy ta ñöôïc caùc taám Film Slide truøng khít leân nhau. PHAÀN III : TÌM HIEÅU MOÄT SOÁ FILE AÛNH VAØ HEÄ MAØU I. Tìm hieåu moät soá File aûnh : File aûnh PCX : Caáu truùc cuûa PCX Header : Coù chieàu daøi laø 128 bytes. Header ñöôïc chia laøm 3 vuøng : Vuøng 1 : caùc thoâng tin chính bao goàm password, version, kieåu neùn, soá bits löu tröõ moãi pixel, kích thöôùc aûnh, ñoä phaân giaûi ngang, doïc. Vuøng 2 : Caùc thoâng tin veà Palette. Vuøng 3 : Caùc thoâng tin phuï trôï bao goàm : video mode, soá planes maøu, soá bytes moãi doøng queùt, kieåu Palette… Noäi dung Header ñöôïc moâ taû chi tieát sau : Byte# Kích thöôùc Data 0 1 Password 1 1 Version 2 1 Encode 3 1 Bits per pixel 4 8 Window 12 2 Hres 14 2 Vres 16 48 Palette 64 1 Video mode 65 1 Num of planes 66 2 Bytes per line 68 2 Palette info 70 58 Unuser Caùc thoâng tin chính : Password = A0h : daïng taäp tin PCX. Version : coù caùc giaù trò : 0 : version 2.5 2 : version 2.8 ( coù Palette) 3 : Version 2.8 ( khoâng coù Palette) 4 : PC Paintbrush for Windows 5 : version 3.0 hay lôùn hôn. Encode = 1 (run – length) : maõ daïng taäp tin PCX thoâng thöôøng. Bits per pixel : soá bit daønh cho moät pixel treân moät plane. Ñoái vôùi aûnh VGA 16 maøu, 4 planes, moät pixel aûnh caàn 4 bit vaø moät bit treân moät plane thì bits per pixel = 4. Ñoái vôùi aûnh VGA 256 maøu, 1 planes, moät pixel caàn 8 bit thì bits per pixel = 8. Windows laø moät boä boán (x1, y1, x2, y2) xaùc ñònh toïa ñoä goùc traùi beân treân vaø goùc phaûi beân döôùi cuûa cöûa soå hình chöõ nhaät treân maøn hình maø aûnh hieän leân, Window xaùc ñònh kích thöôùc cuûa aûnh. Ñoái vôùi taäp tin PCX, (x1, y1) laø goùc traùi beân treân maøn hình (x1 = y1 = 0) vaø (x2 = xmax, y2 = ymax) laø goùc phaûi beân döôùi tuøy theo mode maøn hình. Hres, Vres : ñoä phaân giaûi ngang, doïc cuûa maøn hình. Caùc thoâng tin phuï trôï : Video mode : vuøng naøy thöôøng ñöôïc boû qua vaø coù giaù trò 0. Num of planes : laø soá planes caàn thieát ñeå löu tröõ 1 pixel. Thöôøng soá planes baèng soá bit caàn thieát ñeå löu tröõ 1 pixel. Ñeå bieát giaù trò cuûa moät pixel thì phaûi ñoïc ñoàng thôøi treân taát caû caùc planes, do ñoù toác ñoä bung aûnh seõ chaäm. Giaù trò cuûa num of planes lieân quan ñeán giaù trò löu taïi bits per pixel. Bytes per line : laø soá byte caàn thieát cho moät doøng queùt treân maøn hình cho 1 plane. Vôùi PCX, BytesPerLine = (Hres * BitsPerPixel) / 8. Vôùi ñoä phaân giaûi 640 * 480 : BitsPerPixel = 1, BytesPerLine = 80. Palette info : cho bieát aûnh thuoäc loaïi maøu (color / mono) Unused : laø vuøng khoâng duøng ñeán. Vuøng döõ lieäu : Döõ lieäu aûnh ñöôïc saép xeáp thöù töï töø traùi qua phaûi vaø töø treân xuoáng döôùi. Moãi doøng queùt aûnh ñöôïc maõ hoùa rieâng theo giaûi thuaät run-length. Döõ lieäu aûnh mono ñöôïc höu nhö bitmaps. Baûng maøu : Baûng maøu coù kích thöôùc 769 bytes. Baûng maøu laø nôi löu tröõ caùc phaàn cô baûn taïo neân maøu cuûa caùc pixel ñöôïc löu tröõ trong vuøng söï lieän. Tyû leä caùc thaønh phaàn cô baûn (red, green, blue) khaùc nhau sex taïo neân maøu khaùc nhau. Do ñoù, tyû leä naøy caàn löu tröõ trong header ñoàng thôøi vôùi vieäc löu tröõ ñeå hình aûnh ñöôïc trung thöïc khi hieän leân maøn hình maùy tính. Thöôøng vôùi mode EGA / VGA coù 16 thanh ghi Palette neân vuøng löu tröõ thoâng tin veà baûng maøu ôû header goàm 16 * 3 = 48 bytes. Moãi thanh ghi Palette töông öùng vôùi moät boä phaän 3 thaønh phaàn maøu cô baûn töông öùng vôùi maøu chæ ra bôûi Palette ôû hình döôùi : … Red Green Blue … Baûng maøu Do ñoù, tröôùc khi hieån thò, thoâng tin veà baûng maøu caàn ñöôïc naïp trôû laïi caùc thanh ghi Palette trong adaptor maøn hình. File aûnh TIFF : File aûnh Tiff ñöôïc thieát keá laøm giaûm nheï bôùt caùc vaán ñeà lieân quan ñeán vieäc môû roäng file aûnh coá ñònh, veà caáu truùc noù cuõng goàm ba phaàn chính : Phaàn Header (IFH) : coù trong taát caû caùc file Tiff : 1 word : chæ ra kieåu söû duïng ñeå taïo file do maùy PC hay Macintosh, hai loaïi naøy raát khaùc nhau ôû thöù töï caùc bytes löu tröõ trong caùc soá daøi 2 hay 4 bytes. 2 word : version. Töø luoân coù giaù trò laø 42. Coù theå coi laø ñaëc tröng cuûa file Tiff vì noù khoâng thay ñoåi. 3 word : giaù trò Offset tính theo byte tính töø ñaàu file tôùi caáu truùc IFD (Image File Directory) laø caáu truùc thöù hai cuûa file. Thöù töï caùc bytes ôû ñaây phuï thuoäc vaøo daáu hieäu tröôøng ñaàu tieân. Phaàn thöù 2 (IFD) : noù khoâng ôû ngay sau IFH maø vò trí noù ñöôïc xaùc ñònh bôûi tröôøng Offset trong ñaàu file. Coù theå coù moät hay nhieàu IFH cuøng toàn taïi trong file (neáu file coù nhieàu hôn moät aûnh). Phaàn naøy bao goàm : 2 bytes : chöùa caùc DE (Directory Entry) 12 bytes : laø caùc DE xeáp lieân tieáp. Moãi DE chieám 12 bytes. 4 bytes : Offset troû tôùi IFD tieáp theo. Neáu ñaây laø IFD cuoái cuøng thì tröôøng naøy baèng 0. Phaàn thöù 3 : caùc DE Caùc DE coù ñoä daøi coá ñònh laø 12 bytes vaø chia laøm boán phaàn : 2 bytes : chæ ra daáu hieäu maø file aûnh ñaõ ñöôïc xaây döïng. 2 bytes : kieåu döõ lieäu tham soá aûnh. Coù 5 kieåu cô baûn : 1 : BYTES (1 byte) 2 : ASCII (1 byte) 3 : SHORT (2 byte) 4 : LONG (4 byte) 5 : RATIONAL (8 byte) 4 bytes : tröôøng ñoä daøi (boä ñeám) chöùa soá löôïng chæ muïc tieâu cuûa döõ lieäu ñaõ ñöôïc chæ ra. Noù khoâng phaûi toång soá bytes caàn thieát ñeå löu tröõ. Ñeå coù soá lieäu naøy ta caàn nhaân chæ soá muïc vôùi kieåu döõ lieäu ñaõ duøng. 4 bytes : ñoù laø Offset tôùi ñieåm baét ñaàu döõ lieäu thöïc lieân quan vôùi DE khoâng phaûi löu tröõ vaät lyù cuøng vôùi noù naèm ôû 1 vò trí naøo ñoù trong file. Döõ lieäu ñöôïc chöùa trong file thöôøng ñöôïc toå chöùc thaønh caùc nhoùm doøng (coät) queùt cuûa döõ lieäu aûnh. Caùch toå chöùc naøy laøm giaûm boä nhôù caàn thieát cho vieäc ñoïc file. Vieäc giaûi neùn thöïc hieän theo 4 kieåu khaùc nhau ñöôïc löu tröõ trong daáu hieäu neùn. Nhö ñaõ noùi treân, file aûnh TIFF duøng ñeå giaûi quyeát vaán ñeà khoù môû roäng cuûa file PCX. Tuy nhieân, vôùi cuøng moät aûnh thì vieäc duøng file PCX chieám ít khoâng gian nhôù hôn. File aûnh BMP : Caáu truùc file aûnh BMP bao goàm caùc phaàn chính sau : BMP Header : ñöôïc moâ taû nhö sau : Byte# Data Chi tieát 1 – 2 Daáu nhaän daïng ‘BM’ 3 – 6 Kích thöôùc file 2 words 7 – 10 Daønh rieâng Thöôøng laø 0 11 – 14 Offset ñeán Bitmap Data Tính töø ñaàu file Bitmap Info : ñöôïc moâ taû nhö sau : Byte# Data Chi tieát 1 – 4 Soá byte trong Header Thöôøng laø 40 bytes 5 – 8 Chieàu roäng cuûa bitmap Baèng pixel 9 – 12 Chieàu cao cuûa bitmap Baèng pixel 13 – 14 Soá planes maøu Thöôøng laø 1 15 – 16 Soá bit treân pixel 17 – 20 Daïng neùn 21 – 24 Kích thöôùc aûnh Baèng bytes 25 – 28 Ñoä phaân giaûi ngang Baèng pixels / meùt 29 – 32 Ñoä phaân giaûi doïc Baèng pixels / meùt 33 – 36 Soá maøu duøng cho bitmap Thöôøng laø 0 (taát caû) 37 – 40 Soá maøu quan troïng Thöôøng laø 0 (taát caû) Daïng neùn : 0 : khoâng neùn 1 : run – length (8 bits / pixel) 2 : run – length (4 bits / pixel) Color map : moãi phaàn töû maøu goàm 4 bytes : … Red Green Blue Reserved … Bitmap Data : caùc pixels ñöôïc löu tröõ theo haøng, töø traùi sang phaûi cho moãi doøng, caùc haøng ñöôïc löu tröõ töø döôùi leân treân. Nhö vaäy, bitmap seõ ñöôïc theå hieän töø goùc döôùi traùi. II. Tìm hieåu veà heä maøu : Maøu saéc ñoái töôïng maø chuùng ta quan saùt ñöôïc khoâng chæ phuï thuoäc vaøo baûn thaân cuûa ñoái töôïng maø coøn phuï thuoäc vaøo nguoàn saùng, moâi tröôøng xung quanh ñoái töôïng cuõng nhö heä thoáng caûm nhaän cuûa con ngöôøi. Moät soá caùc ñoái töôïng phaûn xaï laïi caùc tia chieáu leân chuùng (nhö töôøng, giaáy, kim loaïi) trong khi moät soá khaùc cho aùnh saùng ñi xuyeân qua (nhö maøng moûng, kính…). Khi moät beà maët chæ phaûn xaï caùc tia saùng xanh döông ñöôïc chieáu bôûi moät nguoàn saùng ñoû thí noù coù maøu ñen, töông töï khi aùnh saùng maøu luïc ñöôïc nhìn qua moät taám kính chæ cho tia saùng ñoû ñi qua noù cuõng coù maøu ñen. Giaùc quan thò giaùc cuûa con ngöôøi caûm nhaän ñöôïc caùc vaät xung quanh thoâng qua caùc tia saùng maàu toát hôn raát nhieàu so vôùi caùc vaät chæ coù hai maøu ñen traéng. Vì vaäy trong kyõ thuaät ñoà hoaï vieäc xaây döïng neân caùc ñoái töôïng maøu laø nhöõng lyù thuyeát cô baûn maø neàn taûng cô sôû laø lyù thuyeát veà maøu saéc. Moâ hình maøu laø moät chæ soá kyõ thuaät cuûa moät heä toaï ñoä maøu ba chieàu vaø taäp caùc maøu nhoû thaønh phaàn coù theå troâng thaáy ñöôïc trong heä thoáng toïa ñoä maøu thuoäc moät gam maøu ñaëc tröng. Ví duï nhö moâ hình maøu RGB(Red, Green, Blue) laø moät taäp caùc maøu thaønh phaàn saép xeáp theo hình laäp phöông cuûa heä truïc toaï ñoä Ñeà caùc. Moâ hình maøu RGB (RED-GREEN-BLUE): ÑOÛ-LUÏC-LAM : Maøu ñoû, luïc : Xanh laù caây, lam : Xanh da trôøi (RGB) ñöôïc söû duïng roäng raõi treân maøn hình CRT vaø caùc loaïi maøn hình coù ñoà hoaï Raster maøu döïa vaøo heä toaï ñoä Ñeà caùc. Gam maøu ñöôïc theå hieän trong heä maøu RGB ñöôïc xaùc ñònh baèng nhöõng ñaëc tính cuûa hieän töôïng phaùt quang cuûa caùc chaát phoát pho trong maøn hình CRT. Hai maøn hình CRT vôùi 2 loaïi chaát phoát pho khaùc nhau seõ cho ra caùc gam maøu khaùc nhau. Söï bieán ñoåi maøu ñöôïc ñònh roõ trong gam maøu cuûa moät CRT so vôùi gam maøu cuûa moät CRT khaùc. Moâ hình maøu CMY (CYAN, MAGENTA, YELLOW) Xanh tím, ñoû töôi, vaøng : Laø phaàn buø töông öùng cho caùc maøu ñoû, luïc, lam vaø chuùng ñöôïc söû duïng nhö nhöõng boä loïc loaïi tröø caùc maøu naøy töø aùnh saùng traéng. Vì vaäy CMY coøn ñöôïc goïi laø caùc phaàn buø loaïi tröø cuûa maøu goác. Taäp hôïp maøu thaønh phaàn bieåu dieãn trong heä toaï ñoä Ñeà caùc cho moâ hình maøu CMY cuõng gioáng nhö cho moâ hình maøu RGB ngoaïi tröø maøu traéng (aùnh saùng traéng) ñöôïc thay theá maøu ñen (Khoâng coù aùnh saùng) ôû taïi nguoàn saùng. Caùc maøu thöôøng ñöôïc taïo thaønh baèng caùch loaïi boû hoaëc ñöôïc buø töø aùnh saùng traéng hôn laø ñöôïc theâm vaøo nhöõng maøu toái. Moâ hình maøu YIQ Moâ hình maøu YIQ laø moâ hình maøu ñöôïc öùng duïng trong truyeàn hình maøu baêng taàn roäng taïi Myõ, vaø do ñoù noù coù moái quan heä chaëc cheõ vôùi maøn hình ñoà hoaï maøu Raster. YIQ laø söï thay ñoåi cuûa RGB cho khaû naêng truyeàn phaùt vaø tính töông thích vôùi ti vi ñen traéng theá heä tröôùc. Tín hieäu truyeàn söû duïng trong heä thoáng NTSC (National Television System Committee). Thaønh phaàn Y cuûa YIQ khoâng phaûi laø maøu vaøng maø laø theå saùng vaø ñöôïc xaùc ñònh gioáng nhö maøu goác Y cuûa CIE. Chæ rieâng thaønh phaàn Y cuûa moät tín hieäu ti vi maøu ñöôïc theå hieän treân ti vi ñen traéng. Maøu ñöôïc maõ hoaù trong 2 thaønh phaàn coøn laïi laø I vaø Q. Maøu YIQ söû duïng heä toaï ñoä Ñeà caùc 3 chieàu vôùi taäp caùc thaønh phaàn nhìn thaáy ñöôïc bieåu dieãn nhö moät khoái ña dieän loài trong khoái laäp phöông RGB. PHAÀN IV : TÌM HIEÅU CÔ SÔÛ DÖÕ LIEÄU CUÛA BAØI TOAÙN Giôùi thieäu chung veà vieäc choïn maøu cho in hoa : Trong thöïc teá saûn xuaát, vieäc choïn maøu cho maãu in caên cöù treân caùc maøu ñöôïc löu trong quaù trình thöû maøu taïi phoøng thí nghieäm. Caùc maøu naøy ñöôïc löu trong soå löu maãu maøu (coøn goïi laø Catalog maøu), moãi loaïi vaûi coù moät Catalog maøu khaùc nhau trong ñoù coù ghi coâng thöùc thuoác nhuoäm taïo neân maøu trong catalog. Khi coù maãu hoa caàn in thöû, nhaân vieân thöû maøu seõ choïn maøu cho maãu hoa döïa treân caùc maøu ñaõ coù saün trong Catalog maøu, neáu maøu khaùch haøng yeâu caàu khoâng coù trong Catalog maøu thí nhaân vieân thí nghieäm seõ tieán haønh thí nghieäm ñeå taïo ra maøu theo yeâu caàu cuûa khaùch haøng, sau ñoù löu vaøo soå catalog maøu. Ví duï : Loaïi vaûi : Phi boùng (FH03) Maøu : GR75 Thaønh phaàn thuoác nhuoäm : Tyû leä - Dianix Yellow Brown FG 2S 0.05% - Dianix Black FK 2S 0.3% - Dianix Rubin RS 3TH 0.5% Cô sôû döõ lieäu : Töø thöïc teá treân, ñeå vieäc choïn maøu baèng chöông trình tröôùc tieân ta caàn ñöa caùc döõ lieäu trong catalog maøu vaøo maùy tính döôùi daïng cô sôû döõ lieäu. ÔÛ ñaây toâi xaây döïng cô sôû döõ lieäu baèng Microsoft Access 97. Löôïc ñoà quan heä : THUOCNHUOM - MSThuocnhuom - Tenthuocnhuom DONIN - IDDonin - Ngayin (1,n) (1,n) TYLE - IDTyle - Tyle (1,n) LOAIVAI - MSVai - TenVai - PE - Cotton MAUIN - IDMauin - Tenmau - Mau (1,n) Moâ hình toå chöùc döõ lieäu : LOAIVAI(MSVai, TenVai, PE, Cotton) MAUIN(IDMauin, TenMau, Mau) THUOCNHUOM(MSThuocnhuom, Tenthuocnhuom) TYLE(IDTyle, IDMauin, MSThuocnhuom, IDDonin, Tyle) DONIN(IDDonin, MSVai, ngayin) Moâ hình vaät lyù döõ lieäu : LOAIVAI(MSVai, TenVai, PE, Cotton) LOAIVAI Field name Data Type Field size Validation Rule MSVai Text 10 Tenvai Text 30 PE Integer Cotton Integer MAUIN(IDMauin, TenMau, Mau) MAUIN Field name Data Type Field size Validation Rule IDMauin AutoNum TenMau Text 15 Mau Long THUOCNHUOM(MSThuocnhuom, Tenthuocnhuom) THUOCNHUOM Field name Data Type Field size Validation Rule MSthuocnhuom Text 10 Tenthuocnhuom Text 50 TYLE(IDTyle, IDMauin, MSThuocnhuom,IDDonin,Tyle) TYLE Field name Data Type Field size Validation Rule IDTyle AutoNum Tyle Double DONIN(IDDonin,MSVai,ngayin,) DONIN Field name Data Type Field size Validation Rule IDDonin AutoNum Ngayin Date CSDL ñöôïc thieát keá baèng Ascess97 ñöôïc nhuùng vaøo VB6.0 thoâng qua ñoái töôïng döõ lieäu ADO (ActiveX Data Objects). Tìm hieåu veà ñoái töôïng ADO : Cho ñeán VB 5.0 ADO (Döõ lieäu ñoái töôïng ActiveX – ActiveX Data Object) trôû thaønh neàn taûng cuûa kyõ thuaät truy caäp cô sôû döõ lieäu Internet. Trong VB 6.0, ADO caøng quan troïng hôn – maïnh meõ hôn. Ta coù theå duøng ADO khoâng chæ truy caäp cô sôû döõ lieäu thoâng qua trang Web, maø coøn coù theå duøng noù ñeå laáy döõ lieäu töø öùng duïng vieát baèng VB. ADO laø giao dieän döïa treân ñoái töôïng cho coâng ngheä döõ lieäu môùi goïi laø OLE DB. OLE DB ñöôïc thieát keá ñeå thay theá ODBC nhö moät phöông thöùc truy caäp döõ lieäu. ODBC hieän thôøi laø tieâu chuaån phía Client söû duïng Windows raát phoå bieán ñeå truy caäp caùc döõ lieäu quan heä bôûi vì noù thieát laäp caùc Server cô sôû döõ lieäu quan heä caøng toång quaùt caøng toát ñeán caùc öùng duïng Client. OLE DB ñi saâu hôn moät böôùc, baèng caùch laøm cho taát caû nguoàn döõ lieäu trôû thaønh toång quaùt ñoái vôùi öùng duïng Client. Xaây döïng öùng duïng VB vôùi ADO : ADO laø coâng ngheä truy caäp cô sôû döõ lieäu höôùng ñoái töôïng töông töï DAO vaø RDO. ADO hieän nay ñöôïc Microsoft xem laø kyõ thuaät ñeå truy caäp cô sôû döõ lieäu töø Web server. Bôûi vì ADO ñöôïc cung caáp döôùi daïng thö vieän ActiveX Server (töông töï DAO vaø RDO), ta coù theå thoaûi maùi duøng ADO trong öùng duïng VB. Trong thöïc teá, baèng nhieàu caùch, ta seõ thaáy raèng söû duïng ADO ñeå laøm vieäc vôùi cô sôû döõ lieäu Client/Server thì deã hôn caùc kyõ thuaät khaùc. Phaàn lôùn caùc laäp trình vieân VB khoâng töông taùc tröïc tieáp vôùi OLE DB. Thay vaøo ñoù, hoï laäp trình vôùi ADO, moâ hình ñoái töôïng cung caáp giao tieáp vôùi OLE DB. Trình cung caáp OLE DB khoâng nhieàu nhö caùc trình ñieàu khieån ODBC, nhöng soá löôïng naøy ñaõ taêng leân ñaùng keå töø khi ADO 2.0 ñöôïc phaùt haønh vaøo naêm 1998. Phieân baûn naøy ñaõ ñöôïc ñöa vaøo VB 6.0, bao goàm caùc trình cung caáp cuïc boä cho SQL server, Microsoft Jet/Accesss. Ta chæ caàn laäp trình vôùi phaàn giao dieän ngöôøi söû duïng ôû phía Client. Bôûi vì vieäc truy caäp döõ lieäu treân caû trình duyeät Web vaø öùng duïng VB ñöôïc chuyeån heát veà phía ActiveX Server, ta coù theå baûo ñaûm raèng logic chöông trình luoân nhaát quaùn, baát keå loaïi öùng duïng naøo ñang ñöôïc duøng. Caøi ñaët vaø thieát laäp tham chieáu ñeán ADO trong öùng duïng Visual Basic : ADO ñöôïc caøi ñaët nhö moät phaàn cuûa Visual Basic 6.0 Sau khi caøi ñaët xong, ta baét ñaàu söû duïng noù baèng caùch thieát laäp tham chieáu ñeán thö vieän ADO trong öùng duïng VB, töông töï nhö khi thieát laäp tham chieáu ñeán DAO. PHAÀN V : THIEÁT KEÁ VAØ CAØI ÑAËT CHÖÔNG TRÌNH Caáu truùc chöông trình : v Caùc chöùc naêng chính cuûa chöông trình Taïo caùc lôùp Film slide töø File aûnh ñen traéng (Duøng Scaner) Ñieàu chænh caùc lôùp Film truøng khít leân nhau (Qua 2 ñieåm Rappo) Choïn maøu cho caùc lôùp Film töø CSDL maøu Thieát keá theo chöùc naêng cuûa chöông trình thì ta coù bieåu ñoà phaân boá chöùc naêng cuûa chöông trình nhö sau : Chöông trình choïn maøu cho maãu hoa Ñieàu chænh caùc lôùp Film truøng Rappo Choïn maøu cho caùc lôùp Film töø CSDL maøu Taïo caùc lôùp Film Slide treân maùy tính Ngoaøi ra khi chuùng ta tieán haønh caøi ñaët chöông trình chuùng ta caàn phaûi thöïc hieän qui taéc chung laø giao tieáp ngöôøi – maùy, do ñoù caàn phaûi coù theâm coâng cuï trôï giuùp cho quaù trình choïn maøu cho maãu hoa baèng maùy tính. v Giao dieän chính cuûa chöông trình : Choïn lôùp CSDL maøu Xem taát caû caùc lôùp ñaõ coù Xoùa traéng maøn hình Xem laïi lôùp(Slide) Taïo lôùp (Slide) Laáy lôùp Chöông trình ñöôïc vieát baèng Visual Basic 6.0 chaïy treân Heä ñieàu haønh Windows . CSDL ñöôïc thieát keá baèng Ascess97 ñöôïc nhuùng vaøo VB6.0 thoâng qua ñoái töôïng döõ lieäu ADO (ActiveX Data Objects) Thöïc nghieäm choïn maøu moät maãu hoa : Sau khi caøi ñaët chöông trình, chuùng ta tieán haønh thöïc nghieäm choïn maøu cho moät maãu hoa ñeå ñaùnh giaù keát quaû. Sau ñaây laø moät soá thöïc nghieäm thu ñöôïc : Töø boä maãu Film slide, ta scan vaøo maùy tính vôùi caùc taäp tin sau : Class1.wfm, Class2.Wfm, Class3.Wfm, Class4.Wfm, Class5.Wfm, Class6.Wfm, Class7.Wfm Sau ñoù laàn löôït taïo thaønh caùc lôùp trong chöông trình laø : Class1, Class2, Class3, Class4, Class5, Class6, Class7. Ñieàu chænh Rappo vaø choïn maøu töø CSDL maøu : Sau khi ñaõ choïn caùc lôùp vaø choïn caùc ñieåm rappo chuaån, ta choïn nuùt leänh preview, nuùt leänh naøy seõ goïi thuû tuïc Preview() tieán haønh tính toaùn ñieàu chænh caùc caùc lôùp cho truøng khít . Nhaäp cô sôû döõ lieäu maøu vaøo chöông trình : Caên cöù vaøo Catalog maøu cuûa phoøng thí nghieäm ngöôøi söû duïng chöông trình seõ tieán haønh queùt maãu maøu vaø döõ lieäu thuoác in vaøo thoâng qua Form Datainput vaø löu vaøo CSDL cuûa chöông trình Töø oâ maãu maøu beân phaûi ngöôøi söû duïng ñieàu chænh ba thoâng soá RBG ñeå ñaït ñöôïc maøu nhö maøu CATALOG. Moät soá thuû tuïc chính trong chöông trình : a. Thuû tuïc laáy File töø oå ñóa vaø taïo lôùp Film : Private Sub CmdImport_Click() On Error GoTo DialogError With CommonDialog1 .CancelError = True .Filter = "AllFile (*.*)|*.*|Windows Bitmap (*.Bmp)|*.Bmp|Windows MetaFile (*.Wmf)|*.Wmf " .DialogTitle = "Select a class slide to open" .ShowOpen PicSlaver.Picture = LoadPicture(.FileName) End With DialogError: PicSlaver.Move 0, 0 HScngang.Max = Abs(PicSlaver.Width - PicMain.Width) VScdoc.Max = Abs(PicSlaver.Height - PicMain.Height) End Sub Private Sub CmdTaolop_Click() Static i, j As Integer FrmMain.MousePointer = 11 Select Case lop Case 0 Taolop Lop0 = A ReDim A(1) Case 1 Taolop Lop1 = A ReDim A(1) Case 2 Taolop Lop2 = A ReDim A(1) Case 3 Taolop Lop3 = A ReDim A(1) Case 4 Taolop Lop4 = A ReDim A(1) Case 5 Taolop Lop5 = A ReDim A(1) Case 6 Taolop Lop6 = A ReDim A(1) Case 7 Taolop Lop7 = A ReDim A(1) Case 8 Taolop Lop8 = A ReDim A(1) Case 9 Taolop Lop9 = A ReDim A(1) End Select FrmMain.MousePointer = 1 End Sub Private Sub Taolop() Dim diem, i, j As Integer 'Duyet so diem mau cua lop diem = 0 For i = 1 To PicSlaver.Width For j = 1 To PicSlaver.Height If (PicSlaver.Point(i, j) = 0) Or (PicSlaver.Point(i, j) = Solop(2, lop)) Then diem = diem + 1 End If Next Next 'gan so phan tu bang so diem mau ptu = diem + 3 ReDim A(1 To 2, 1 To ptu) 'luu toa do X,Y cua diem mau diem = 4 For i = 1 To PicSlaver.Width For j = 1 To PicSlaver.Height If (PicSlaver.Point(i, j) = 0) Or (PicSlaver.Point(i, j) = Solop(2, lop)) Then A(1, diem) = i A(2, diem) = j diem = diem + 1 End If Next Next 'luu thong so (So Ptu,Rappo1,Rappo2) A(1, 1) = ptu A(1, 2) = Rappo(1, 1) A(2, 2) = Rappo(1, 2) A(1, 3) = Rappo(2, 1) A(2, 3) = Rappo(2, 2) End Sub b. Thuû tuïc choïn maøu cho lôùp Film : Private Sub Command1_Click(Index As Integer) Select Case lop Case 0 Solop(2, lop) = Command1(Index).BackColor A = Lop0 Load_pic_Color Case 1 Solop(2, lop) = Command1(Index).BackColor A = Lop1 Load_pic_Color Case 2 Solop(2, lop) = Command1(Index).BackColor A = Lop2 Load_pic_Color Case 3 Solop(2, lop) = Command1(Index).BackColor A = Lop3 Load_pic_Color Case 4 Solop(2, lop) = Command1(Index).BackColor A = Lop4 Load_pic_Color Case 5 Solop(2, lop) = Command1(Index).BackColor A = Lop5 Load_pic_Color Case 6 Solop(2, lop) = Command1(Index).BackColor A = Lop6 Load_pic_Color Case 7 Solop(2, lop) = Command1(Index).BackColor A = Lop7 Load_pic_Color Case 8 Solop(2, lop) = Command1(Index).BackColor A = Lop8 Load_pic_Color Case 9 Solop(2, lop) = Command1(Index).BackColor A = Lop9 Load_pic_Color End Select End Sub Public Sub Load_pic_Color() Dim i, X, Y As Integer Stsbar1.Panels(4).Text = CobLop.ItemData(lop) X = A(1, 2) Y = A(2, 2) Stsbar1.Panels(6).Text = Str(X) & "," & " " & Str(Y) X = A(1, 3) Y = A(2, 3) Stsbar1.Panels(8).Text = Str(X) & "," & " " & Str(Y) For i = 4 To A(1, 1) X = A(1, i) Y = A(2, i) PicSlaver.PSet (X, Y), (Solop(2, lop)) Next End Sub c. Thuû tuïc ñieàu chænh Rappo truøng khít leân nhau : Private Sub CmdPreview_Click() 'Dim i As Byte PicSlaver.Picture = LoadPicture("") For LopP = 0 To 9 If Solop(1, LopP) 10 Then Select Case LopP Case 0 A = Lop0 Preview ReDim A(1) Case 1 A = Lop1 Dich_Diem Preview Lop1 = A ReDim A(1) Case 2 A = Lop2 Dich_Diem Preview Lop2 = A ReDim A(1) Case 3 A = Lop3 Dich_Diem Preview Lop3 = A ReDim A(1) Case 4 A = Lop4 Dich_Diem Preview Lop4 = A ReDim A(1) Case 5 A = Lop5 Dich_Diem Preview Lop5 = A ReDim A(1) Case 6 A = Lop6 Dich_Diem Preview Lop6 = A ReDim A(1) Case 7 A = Lop7 Dich_Diem Preview Lop7 = A ReDim A(1) Case 8 A = Lop8 Dich_Diem Preview Lop8 = A ReDim A(1) Case 9 A = Lop9 Dich_Diem Preview Lop9 = A ReDim A(1) End Select End If Next End Sub Public Sub Dich_Diem() Dim X, Y, X1, X2, X3, X4, Y1, Y2, Y3, Y4 As Integer Dim i, Dx, Dy As Integer Dim CosA, SinA As Double Dim A2, B2, C2 As Long Dim Teta As Boolean X1 = Lop0(1, 2) Y1 = Lop0(2, 2) X2 = Lop0(1, 3) Y2 = Lop0(2, 3) X3 = A(1, 2) Y3 = A(2, 2) X4 = A(1, 3) Y4 = A(2, 3) 'Dich diem ve diem Rappo chuan Dx = X1 - X3 Dy = Y1 - Y3 For i = 4 To A(1, 1) X = A(1, i) + Dx Y = A(2, i) + Dy A(1, i) = X A(2, i) = Y Next A(1, 2) = X3 + Dx A(2, 2) = Y3 + Dy A(1, 3) = X4 + Dx A(2, 3) = Y4 + Dy X3 = A(1, 2) Y3 = A(2, 2) X4 = A(1, 3) Y4 = A(2, 3) If (Y4) > (Y2) Then Teta = True Else Teta = False End If 'Tinh goc xoay Teta A2 = (X4 - X2) ^ 2 + (Y4 - Y2) ^ 2 B2 = (X1 - X4) ^ 2 + (Y1 - Y4) ^ 2 C2 = (X2 - X1) ^ 2 + (Y2 - Y1) ^ 2 CosA = (B2 + C2 - A2) / (2 * Sqr(B2 * C2)) SinA = Sqr(1 - CosA ^ 2) 'Dich diem ve goc toa do Dx = 0 - X3 Dy = 0 - Y3 For i = 4 To A(1, 1) X = A(1, i) + Dx Y = A(2, i) + Dy A(1, i) = X A(2, i) = Y Next A(1, 2) = X3 + Dx A(2, 2) = Y3 + Dy A(1, 3) = X4 + Dx A(2, 3) = Y4 + Dy X3 = A(1, 2) Y3 = A(2, 2) X4 = A(1, 3) Y4 = A(2, 3) 'Xoay diem If Teta Then 'Goc teta am For i = 4 To A(1, 1) X = Round(A(1, i) * CosA + A(2, i) * SinA) Y = Round(A(1, i) * -SinA + A(2, i) * CosA) A(1, i) = X A(2, i) = Y Next X = Round(X4 * CosA + Y4 * SinA) Y = Round(X4 * -SinA + Y4 * CosA) A(1, 3) = X A(2, 3) = Y Else 'Goc Teta duong For i = 4 To A(1, 1) X = Round(A(1, i) * CosA - A(2, i) * SinA) Y = Round(A(1, i) * SinA + A(2, i) * CosA) A(1, i) = X A(2, i) = Y Next X = Round(X4 * CosA - Y4 * SinA) Y = Round(X4 * SinA + Y4 * CosA) A(1, 3) = X A(2, 3) = Y End If 'Dich diem lai vi tri ban dau For i = 4 To A(1, 1) X = A(1, i) - Dx Y = A(2, i) - Dy A(1, i) = X A(2, i) = Y Next A(1, 2) = X3 - Dx A(2, 2) = Y3 - Dy A(1, 3) = X4 - Dx A(2, 3) = Y4 - Dy End Sub Public Sub Preview() Dim i, X, Y As Integer For i = 4 To A(1, 1) X = A(1, i) Y = A(2, i) PicSlaver.PSet (X, Y), (Solop(2, LopP)) Next End Sub d. Thuû tuïc laáy maøu töø CSDL : Sub BangMau() Dim i As Integer Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Set adoConnection = New ADODB.Connection Set adoRecordset = New ADODB.Recordset adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb" adoRecordset.CursorLocation = adUseClient adoRecordset.CursorType = adOpenStatic adoRecordset.Open "Mauin", adoConnection i = 0 With adoRecordset If .RecordCount > 0 Then Dim Kt As Boolean .MoveFirst Kt = False While Not (.EOF) And Not (Kt) If UCase(Trim(.Fields(1).Value)) = UCase(Trim(DataCobMSVai.text)) Then MangTenmau(i) = UCase(Trim(.Fields(2))) MangMau(i) = .Fields(3) i = i + 1 .MoveNext Else .MoveNext End If Wend End If End With Somau = i - 1 adoRecordset.Close End Sub Thuû tuïc taïo CSDL trong chöông trình : Option Explicit Dim i, j As Integer Dim mau As Long Dim St, R, G, B As String Dim numchar As Byte Dim Red, Green, Blue As Integer Public Function Dlookup(Tenbang As String, Stt1 As Integer, Stt2 As Integer, TenDk As String) As String Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Dim Kq As String Kq = " " Set adoConnection = New ADODB.Connection Set adoRecordset = New ADODB.Recordset adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb" adoRecordset.CursorLocation = adUseClient adoRecordset.CursorType = adOpenStatic adoRecordset.Open Tenbang, adoConnection adoRecordset.Requery With adoRecordset If .RecordCount > 0 Then Dim Kt As Boolean .MoveFirst Kt = False While Not (.EOF) And Not (Kt) If UCase(Trim(.Fields(Stt1).Value)) = UCase(Trim(TenDk)) Then Kq = Trim(.Fields(Stt2).Value) Kt = True Else .MoveNext End If Wend End If End With Dlookup = Kq End Function Private Sub CmdCancel_Click() Unload Me FrmMain.Visible = True End Sub Private Sub CmdOK_Click() Dim traloi If Kiemtra(DataCobMSvai.text, TxtMSMau.text) Then AddData Else traloi = MsgBox("Da co Mau " & TxtMSMau.text & " Tren vai " & DataCobMSvai.text, vbOKOnly) If traloi = vbOKOnly Then Exit Sub End If End If End Sub Private Sub CmdRefill_Click() mau = PicScan.Point(0, 0) St = Taochuoi(mau) R = Right(St, 2) G = Mid(St, 3, 2) B = Left(St, 2) Red = changeHex(R) Green = changeHex(G) Blue = changeHex(B) For i = 0 To PicScan.ScaleWidth - 1 For j = 0 To PicScan.ScaleHeight - 1 mau = PicScan.Point(i, j) St = Taochuoi(mau) R = Right(St, 2) G = Mid(St, 3, 2) B = Left(St, 2) Red = (Red + changeHex(R)) / 2 Green = (Green + changeHex(G)) / 2 Blue = (Blue + changeHex(B)) / 2 Next Next PicRefill.BackColor = RGB(Red, Green, Blue) HSBRed.Value = Red HSBGreen.Value = Green HSBBlue.Value = Blue End Sub Private Sub DataCobMSVai_Change() TxtTenVai.text = Dlookup("Loaivai", 0, 1, DataCobMSvai.text) End Sub Private Sub DataCobTP_Click(Index As Integer, Area As Integer) For i = 0 To 2 TxtMSthuoc(i) = Dlookup("Tenthuoc", 1, 0, DataCobTP(i).text) Next End Sub Private Sub HSBRed_Change() Red = HSBRed.Value PicRefill.BackColor = RGB(Red, Green, Blue) TxtR.text = Red End Sub Private Sub HSBGreen_Change() Green = HSBGreen.Value PicRefill.BackColor = RGB(Red, Green, Blue) TxtG.text = Green End Sub Private Sub HSBBlue_Change() Blue = HSBBlue.Value PicRefill.BackColor = RGB(Red, Green, Blue) TxtB.text = Blue End Sub Public Function changeHex(ByVal Chuoi As String) As Byte Dim i, Sodau, sosau As Byte For i = 1 To 2 If i = 1 Then Select Case Mid(Chuoi, i, 1) Case "0" Sodau = 0 * 16 Case "1" Sodau = 1 * 16 Case "2" Sodau = 2 * 16 Case "3" Sodau = 3 * 16 Case "4" Sodau = 4 * 16 Case "5" Sodau = 5 * 16 Case "6" Sodau = 6 * 16 Case "7" Sodau = 7 * 16 Case "8" Sodau = 8 * 16 Case "9" Sodau = 9 * 16 Case "A" Sodau = 10 * 16 Case "B" Sodau = 11 * 16 Case "C" Sodau = 12 * 16 Case "D" Sodau = 13 * 16 Case "E" Sodau = 14 * 16 Case "F" Sodau = 15 * 16 End Select Else Select Case Mid(Chuoi, i, 1) Case "0" sosau = 0 Case "1" sosau = 1 Case "2" sosau = 2 Case "3" sosau = 3 Case "4" sosau = 4 Case "5" sosau = 5 Case "6" sosau = 6 Case "7" sosau = 7 Case "8" sosau = 8 Case "9" sosau = 9 Case "A" sosau = 10 Case "B" sosau = 11 Case "C" sosau = 12 Case "D" sosau = 13 Case "E" sosau = 14 Case "F" sosau = 15 End Select End If Next changeHex = Sodau + sosau End Function Public Function Taochuoi(ByVal Xau As Long) As String Dim St As String St = Hex(mau) numchar = Len(St) Select Case numchar Case 1 St = "00000" + St Case 2 St = "0000" + St Case 3 St = "000" + St Case 4 St = "00" + St Case 5 St = "0" + St Case Else St = St End Select Taochuoi = St End Function Private Sub Form_Load() TxtR.text = HSBRed.Value TxtB.text = HSBBlue.Value TxtG.text = HSBGreen.Value End Sub Private Sub PicScan_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) mau = PicScan.Point(X, Y) St = Taochuoi(mau) R = Right(St, 2) G = Mid(St, 3, 2) B = Left(St, 2) Red = changeHex(R) Green = changeHex(G) Blue = changeHex(B) PicRefill.BackColor = RGB(Red, Green, Blue) HSBRed.Value = Red HSBGreen.Value = Green HSBBlue.Value = Blue End Sub Private Sub PicScan_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) PicScan.MousePointer = 2 PicSample.BackColor = PicScan.Point(X, Y) End Sub Public Function Kiemtra(Field1 As String, Field2 As String) As Boolean Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Dim Kq As Boolean Kq = True Set adoConnection = New ADODB.Connection Set adoRecordset = New ADODB.Recordset adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb" adoRecordset.CursorLocation = adUseClient adoRecordset.CursorType = adOpenStatic adoRecordset.Open "Mauin", adoConnection adoRecordset.Requery With adoRecordset If .RecordCount > 0 Then Dim Kt As Boolean .MoveFirst Kt = False While Not (.EOF) And Not (Kt) If UCase(Trim(.Fields(1).Value)) = UCase(Trim(Field1)) And UCase(Trim(.Fields(2).Value)) = UCase(Trim(Field2)) Then Kq = False Kt = True Else .MoveNext End If Wend End If End With Kiemtra = Kq End Function Public Sub AddData() Dim i, j As Byte Dim IDmauin As Integer Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Dim Kq As Boolean Kq = True Set adoConnection = New ADODB.Connection Set adoRecordset = New ADODB.Recordset adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\BTHai-VB\totnghiep\colordesign.mdb" adoRecordset.CursorLocation = adUseClient adoRecordset.CursorType = adOpenKeyset adoRecordset.LockType = adLockOptimistic For i = 1 To 3 If i = 1 Then adoRecordset.Open "Loaivai", adoConnection With adoRecordset If .RecordCount > 0 Then Dim Kt As Boolean .MoveFirst Kt = False While Not (.EOF) And Not (Kt) If UCase(Trim(.Fields(0).Value)) = UCase(Trim(DataCobMSvai.text)) Then Kt = True Else .MoveNext End If Wend End If End With If Not (Kt) Then adoRecordset.AddNew adoRecordset.Fields(0) = DataCobMSvai.text adoRecordset.Fields(1) = TxtTenVai.text adoRecordset.Update End If adoRecordset.Close End If If i = 2 Then adoRecordset.Open "Mauin", adoConnection adoRecordset.AddNew adoRecordset.Fields(1) = DataCobMSvai.text adoRecordset.Fields(2) = TxtMSMau.text adoRecordset.Fields(3) = PicRefill.BackColor adoRecordset.Update IDmauin = adoRecordset.Fields(0) adoRecordset.Close End If If i = 3 Then adoRecordset.Open "Donin", adoConnection For j = 0 To 2 adoRecordset.AddNew adoRecordset.Fields(1) = IDmauin adoRecordset.Fields(2) = TxtMSthuoc(j).text adoRecordset.Fields(3) = TxtTP(j).text adoRecordset.Update Next adoRecordset.Close End If Next End Sub PHAÀN VI : NHAÄN XEÙT Sau khi tìm hieåu vaø thöïc hieän chöông trình, toâi thaáy ñaây laø moät ñeà taøi raát thieát thöïc trong thöïc teá saûn xuaát cuûa nhaø maùy, noù giuùp cho coâng ñoaïn thöû maãu hoa ñöôïc tieán haønh nhanh choùng, tieát kieäm thôøi gian vaø chi phí saûn xuaát thöû. Noäi dung chính cuûa chöông trình giaûi quyeát ñöôïc caùc vaán ñeà sau : Taïo ñöôïc caùc Film slide treân maùy tính. Ñieàu chænh caùc Film Slide treân maùy truøng khít vôùi nhau. Choïn maøu theo döõ lieäu maøu ñaõ coù saün. Taïo thaønh boä maãu hoa hoaøn chænh treân maùy tính Tuy nhieân do thôøi gian coù haïn neân ñeà taøi chöa ñöôïc nghieân cöùu saâu nhaèm caûi thieän giao dieän ngöôøi – maùy cuõng nhö tính deã duøng cuûa chöông trình, chöông trình coù theå môû roäng ra cho coâng vieäc tính toaùn löôïng hoùa chaát thuoác nhuoäm tieâu toán khi in chính thöùc maãu hoa giuùp cho coâng vieäc thoáng keâ vaø tính toaùn giaù thaønh saûn phaåm. Moät laàn nöõa xin chaân thaønh caûm ôn thaày Nguyeãn Ñình Thuaân, caùc baïn sinh vieân cuøng lôùp vaø caùc ñoàng nghieäp taïi nhaø maùy deät Taân Tieán ñaõ höôùng daãn vaø giuùp ñôõ toâi hoaøn thaønh ñeà taøi naøy. Nguyeãn Hoàng Haûi Muïc luïc Trang Lôøi noùi ñaàu 2 Phaàn I : Giôùi thieäu coâng ngheä saûn xuaát vaûi in hoa 5 1. Coâng ngheä in hoa 5 2. Giôùi thieäu baøi toaùn 6 Phaàn II : Caùc pheùp bieán ñoåi ñeå lôùp Film truøng khít nhau 8 I. Caùc khaùi nieäm toång quan cuûa KT ñoà hoaï 8 II. Pheùp bieán ñoåi ñeå caùc lôùp Film truøng khít 10 1. Taïo lôùp Film 10 2. Caùc pheùp toaùn ñieàu chænh truøng khít 11 Phaàn III. Tìm hieåu moät soá File aûnh vaøheâ5 maøu 18 I. Tìm hieåu moät soá file aûnh 18 II. Tìm hieåu veà heä maøu 23 Phaàn IV. Tìm hieåu cô sôû döõ lieäu cuûa baøi toaùn 25 1. Giôùi thieäu chung veà vieäc choïn maøu in hoa 25 2. Cô sôû döõ lieäu 25 3. Tìm hieåu veà ñoái töôïng ADO 27 4. Xaây döïng öùng duïng VB vôùi ADO 27 5. Caøi ñaët vaø thieát laäp tham chieáu ñeán ADO 28 Phaàn V : Thieát keá vaø caøi ñaët chöông trình 29 1. Caáu truùc chöông trình 29 2.Thöïc nghieäm choïn maøu moät maãu hoa 30 3. Moät soá thuû tuïc chính trong chöông trình 33 Phaàn VI : Nhaän xeùt 54 Muïc luïc 55 Taøi lieäu tham khaûo 56 TAØI LIEÄU THAM KHAÛO Visual Basic 6.0 vaø laäp trình Cô sôû döõ lieäu – NXB giaùo duïc 2000 Kyõ thuaät ñoà hoïa – NXB Khoa hoïc vaø kyõ thuaät Leâ Tuaán Huøng Huyønh Quyeát Thaéng Nhaäp moân xöû lyù aûnh soá – NXB Khoa hoïc vaø kyõ thuaät Löông Maïnh Baù Nguyeãn Thanh Thuûy

Các file đính kèm theo tài liệu này:

  • docXử lý và chọn mẫu màu cho công đoạn in thử một mẫu in hoa tại nhà máy dệt Tân Tiến.doc