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

LỜI NÓI ĐẦU Trong những năm gần đây, ngành Công nghệ thông tin đã và đang được ứng dụng rộng rãi trong nghiên cứu khoa học cũng như trong thực tế sản xuất tại các nhà máy, xí nghiệp tại Việt Nam. Qua thực tế làm việc tại Nhà máy dệt Tân Tiến, tôi nhận thấy tại dây chuyền in hoa có thể áp dụng công nghệ thông tin để tiết kiệm thời gian sản xuất thử sản phẩm cũng như giúp việc định hướng cho việc chọn màu sắc cho sản phẩm vải in hoa. Đề 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ả. Bố cục của đề tài bao gồm : Phần I : Giới thiệu về Công nghệ sản xuất vải In hoa. Phần II : Các phép biến đổi để các lớp phim trùng khớp lên nhau. Phần III : Tìm hiểu một số dạng File ảnh và hệ màu. Phần IV : Tìm hiểu về CSDL của bài tốn Phần V : Thiết kế, cài đặt chương trình thực hiện Phần VI : Nhận xét

doc53 trang | Chia sẻ: banmai | Lượt xem: 1749 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu 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
LỜI NÓI ĐẦU Trong những năm gần đây, ngành Công nghệ thông tin đã và đang được ứng dụng rộng rãi trong nghiên cứu khoa học cũng như trong thực tế sản xuất tại các nhà máy, xí nghiệp tại Việt Nam. Qua thực tế làm việc tại Nhà máy dệt Tân Tiến, tôi nhận thấy tại dây chuyền in hoa có thể áp dụng công nghệ thông tin để tiết kiệm thời gian sản xuất thử sản phẩm cũng như giúp việc định hướng cho việc chọn màu sắc cho sản phẩm vải in hoa. Đề 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ả. Bố cục của đề tài bao gồm : Phần I : Giới thiệu về Công nghệ sản xuất vải In hoa. Phần II : Các phép biến đổi để các lớp phim trùng khớp lên nhau. Phần III : Tìm hiểu một số dạng File ảnh và hệ màu. Phần IV : Tìm hiểu về CSDL của bài tốn Phần V : Thiết kế, cài đặt chương trình thực hiện Phần VI : Nhận xét Vì thời gian và kiến thức còn hạn chế nên không thể tránh khỏi những sai sót, rất mong sự đóng góp ý kiến giúp đỡ của thầy cô giáo, các bạn cùng lớp và các đồng nghiệp tại nhà máy dệt Tân Tiến để có thể hồn thiện đề tài một cách tốt hơn. Nha Trang, ngày 20 tháng 07 năm 2003 Người thực hiện Nguyễn Hồng Hải Ý kiến của Nhà máy dệt Tân Tiến : Ý kiến của giáo viên hướng dẫn : PHẦN I : GIỚI THIỆU CÔNG NGHỆ SẢN XUẤT VẢI IN HOA Công nghệ in hoa : Nhà máy dệt Tân Tiến được thành lập vào tháng 10 năm 1996 với số vốn đầu tư gần 300 tỉ đồng, trong đó nhà máy chú trọng đến việc nhập khẩu thiết bị máy móc tiên tiến của châu Âu cho dây chuyền sản xuất vải in hoa bao gồm các thiết bị làm phim, chế bản ,máy in lưới quay 10 màu và máy hấp liên tục của hãng STORK BRABANT – HÀ LAN. Dây chuyền sản xuất vải in hoa bao gồm các công đoạn sau : Thiết kế mẫu. Tách màu. (Layer slide) Chế bản lưới phẳng (Lưới lụa) In thử Step Film (Chụp thành tấm Film lớn) Chế bản lưới quay (Chụp từ Film lớn ra lưới quay) Pha màu in. In trên máy. Hấp gắn màu. Giặt sau hấp gắn màu. Định hình hồn tất. 5 4 3 1 2 11 10 9 8 7 6 Không Chọn Định hình hoàn tất In thử Giặt sau hấp Chế bản lưới phẳng Hấp gắn màu In trên máy Chế bản lưới quay Step Film Tách màu Slide KHÁCH HÀNG Thiết kế mẫu hoa Giới thiệu bài tốn : Từ một mẫu hoa cần sản xuất thử (Ví dụ mẫu hoa 6 màu như dưới đây), nhân viên Phòng thiết kế mẫu tiến hành tách màu thành 6 màu trên 6 lớp phim trong suốt (Layer Slide) được đánh số từ 1 đến 6, các bản tách màu này ở dạng trắng đen. Sau khi tách màu Sau khi hồn tất công đoạn tách bản này phim được chuyển cho nhân viên phòng chế bản chụp các phim lên lưới phẳng sản xuất thử (Khuôn lưới lụa) cũng được đánh số từ 1 đến 6 tương ứng với từng lớp phim. Các lớp Film Slide này là phim trắng đen (Nền Film trong suốt và họa tiết màu đen), sau đó chụp (Cho chùm ánh sáng tập trung chiếu vào tấm Film slide được áp sát với lưới phẳng đã được phủ một lớp hóa chất nhạy sáng) theo nguyên tắc vùng họa tiết màu đen sẽ không cho ánh sáng đi qua (Lớp keo nhạy sáng tại vùg đó vẫn giữ nguyên tính chất ban đầu), còn vùng trong suốt sẽ cho ánh sáng đi qua và lớp keo vùng ánh sáng đi qua sẽ hóa cứng bám chặt vào lưới phẳng. Sau đó rửa lưới phẳng qua nước vùng keo chưa hóa cứng sẽ trôi đi, như vập tấm khung lưới phẳng sẽ trở thành một âm bản của Film slide. Khuôn lưới phẳng sau đó được chuyển cho Nhân viên phòng thí nghiệm tiến hành chọn màu cho mẫu hoa (công việc này mất rất nhiều thời gian, đòi hỏi sự nhạy cảm màu sắc của người thực hiện chọn màu in thử và tiêu tốn lượng vải in thử không nhỏ). Một tổ hợp 6 màu trên tạo thành một Mẫu in gọi là Colorway, mỗi mẫu hoa có thể làm thành nhiều Colorway cho khách hàng lựa chọn. (Tất cả các công đoạn in thử phải đảm bảo quy trình công nghệ như in chính thức – bao gồm : in, hấp, giặt tẩy để đảm bảo sự đồng đều màu sắc giữa in thử và in chính thức sau này). Sau khi chọn màu và in thử xong mẫu hoa trên, mẫu hoa được gởi cho khách hàng lựa chọn, nếu khách hàng đồng ý thì nhà máy cho tiến hành sản xuất hàng loạt, nếu không có thể phải tiến hành chọn lại màu. Trên đây tôi xin giới thiệu sơ về bài tốn và vấn đề cần giải quyết ở đây là việc đưa các lớp phim (Layer slide) vào máy tính sao cho các bản layer trùng khít lên nhau và tiến hành chọn màu trên từng lớp để chọn màu ưng ý nhất. Từ các màu đã được chọn máy tính tìm trong cơ sở dữ liệu về màu sắc và đưa ra các thành phần thuốc nhuộm cần thiết tạo nên màu đã chọn. (trong thực tế, nhà máy đã tìm hiểu dây chuyền công nghệ được tin học hóa của Hãng Stock Brabant - Hà Lan tuy nhiên do giá thành quá đắt nên chưa thể nhập được dây chuyền trên) vì vậy tôi chỉ mong muốn góp một phần nhỏ trong việc hợp lý hóa quá trình sản xuất của nhà máy. PHẦN II : CÁC PHÉP BIẾN ĐỔI ĐỂ CÁC LỚP FILM TRÙNG KHÍT NHAU I. Các khái niệm tổng quan của kỹ thuật đồ hoạ máy tính (Computer Graphics): Kỹ thuật đồ hoạ máy tính : Kỹ thuật đồ hoạ máy tính có thể định nghĩa như một lĩnh vực của công nghệ thông tin mà ở đó nghiên cứu, xây dựng và tập hợp các công cụ (mô hình lý thuyết và phần mềm) khác nhau để kiến tạo, xây dựng, lưu trữ và xử lý các mô hình (model) và hình ảnh (image) của đối tượng, sự vật hiện tượng khác nhau trong cuộc sống, sản xuất và nghiên cứu. Các mô hình và hình ảnh này có thể là các kết quả thu được từ những lĩnh vực khác nhau của rất nhiều ngành khoa học (Vật lý, tốn học, thiên văn học v..v) và bao trùm rất nhiều thể loại và dạng phong phú . Các kỹ thuật đồ hoạ : Ngày nay số lượng các hệ thống sử dụng kỹ thuật đồ hoạ tương tác đã trở nên rất lớn, ngày càng nhiều và càng trở nên đa dạng hơn, phong phú hơn. Tuy vậy căn cứ vào phương pháp xử lý các dữ liệu trong hệ thống mà người ta phân biệt ra hai hệ thống đồ hoạ : Kỹ thuật đồ hoạ điểm (Sampled – Based Graphics) và Kỹ thuật đồ hoạ vectơ (Geometry – Based Graphics). Kỹ thuật đồ hoạ điểm : Nguyên lý xây dựng các mô hình và hình ảnh trong kỹ thuật đồ hoạ điểm như sau : các mô hình, hình ảnh của các đối tượng được hiện thị thông qua từng pixel (Từng mẫu rời rạc). Trong kỹ thuật này chúng ta có thể tạo ra, thay đổi thuộc tính, xố đi từng pixel của mô hình và hình ảnh các đối tượng. Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rời rạc, từng pixel đều có vị trí xác định, được hiển thị với một giá trị rời rạc (số nguyên) các thông số hiển thị ví dụ như màu sắc hoặc độ sáng. Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đối tượng mà chúng ta muốn hiển thị để nghiên cứu hoặc xây dựng nên. Có hai phương pháp để tạo ra các pixel này : Phương pháp thứ nhất là dùng phần mềm để vẽ trực tiếp từng pixel một, dựa trên các lý thuyết mô phỏng để xây dựng nên các đối tượng hoặc hình ảnh thực của sự vật. Phương pháp thứ hai là rời rạc hố (số hố ) hình ảnh thực của đối tượng sau đó ta có thể sửa đổi (image editing) hoặc xử lý (image processing) mảng các pixel thu được theo phương pháp khác nhau để thu được hình ảnh đặc trưng của đối tượng. Kỹ thuật đồ hoạ vectơ : Nguyên lý xây dựng các mô hình và hình ảnh trong kỹ thuật đồ hoạ vector như sau : trước hết người ta xây dựng mô hình hình học (Geometrical model) cho mô hình hoặc hình ảnh của đối tượng, xác định thuộc tính của mô hình hình học này, sau đó dựa trên mô hình hình học này sẽ thực hiện qua trình tô trát (rendering) để hiển thị từng điểm của mô hình, hình ảnh thực của đối tượng. Ở kỹ thuật đồ hoạ này chúng ta chỉ lưu trữ mô tả tốn học của các thành phần trong mô hình hình học cùng với các thuộc tính tương ứng của nó mà không lưu lại tồn bộ pixel của hình ảnh tô trát (rendering) được . Các thành phần này được mô tả trong mô hình hình học của đối tượng được gọi là thực thể cơ sở hình học của mô hình hình học. Sau đó hình ảnh sẽ được xây dựng từ các thành phần của mô hình hình học, tức là chúng ta sẽ thực hiện quá trình tô trát theo điểm nhưng những pixel này không được lưu giữ lại như một phần của mô hình. Như thế hình ảnh có thể được tô trát (rndering) từ nhiều điểm nhìn và góc nhìn khác nhau dựa trên cùng một mô hình mẫu. So sánh kỹ thuật đồ hoạ điểm và kỹ thuật đồ hoạ vectơ : Trong kỹ thuật đồ hoạ điểm, hình ảnh và mô hình của các vật thể được định nghĩa bởi các điểm của grid, khi đó chúng ta có thể dễ dàng thay đổi thuộc tính của các điểm để thay đổi từng phần hoạc từng vùng của hình ảnh. Trong kỹ thuật đồ hoạ điểm chúng ta có thể dễ dàng copy được các pixel từ một hình ảnh này sang hình ảnh khác. Trong kỹ thuật đồ hoạ vector chúng ta không thay đổi thuộc tính của từng điểm trực tiếp mà ta có thể xử lý với từng thành phần hình hộc cơ sở của nó, sau đó lại thực hiện quá trình tô trát và hiển thị. Trong kỹ thuật đồ hoạ vector chúng ta có thể quan sát hình ảnh và mô hình của hình ảnh và sự vật ở nhiều góc độ khác nhau một cách dễ dàng bằng cách thay đổi điểm nhìn và góc nhìn. II. Phép biến đổi để các lớp Film trùng khít : Tạo lớp phim (Layer slide) : Như giới thiệu trên, từ mẫu hoa được thiết kế cần phải tách thành các lớp phim theo từng màu của mẫu thiết kế Ví dụ : Film Slide Để đưa được tấm Film Slide vào máy tính ta sử dụng máy quét (Scan) quét film vào máy dưới dạng file trắng đen (.Wmf, .BMP, JPEG,…) sau đó đưa vào chương trình xử lý . Ở đây để tạo thành từng lớp Slide trong chương trình, mỗi một Slide được quét vào ta viết thủ tục quét điểm ảnh, nếu điểm ảnh màu đen lưu tọa độ vào mảng 2 chiều . Cấu trúc mảng 2 chiều như sau : Dim A() as Integer (mảng động) Số phần tử Rap1 X Rap2 X X1 X2 ……… Xn-1 Xn Lớp Rap1 Y Rap2 Y Y1 Y2 ……… Yn-1 Yn Trong đó : - Số phần tử : Là tổng số phần tử (n+3) cần lưu của mảng. - Lớp : Lớp Slide. - Rap1 X, Rap1 Y : Điểm Rappo thứ 1 trên tấm Slide (Người sử dụng chương trình chọn) - Rap2 X, Rap2 Y : Điểm Rappo thứ 2 trên tấm Slide (Người sử dụng chương trình chọn) - (X1,Y1), (X2,Y2) … (Xn,Yn) : Tọa độ điểm ảnh Slide. Điểm Rappo1 và Rappo2 dùng để làm chuẩn điều chỉnh để các lớp trùng khít họa tiết với nhau. Các phép tốn điều chỉnh trùng khít các lớp Slide : Các đối tượng phẳng trong tọa độ 2 chiều được mô tả như tập các điểm phẳng. Các điểm được biểu diễn thông qua tọa độ của chúng viết dưới dạng ma trận hay còn gọi là các vector vị trí. Có 2 phương pháp biểu diễn các ma trận mà phép biến đổi đồ hoạ trên đó là như nhau bao gồm phương pháp biểu diễn tọa độ theo ma trận 1 hàng 2 cột và ma trận 2 hàng 1 cột. Trong phần này chúng ta sẽ biểu diễn toạ độ theo ma trận hàng để mô tả tọa độ các điểm. x y và [ x y ] Tập các điểm được lưu trữ trong máy tính dưới dạng các ma trận hay chuỗi điểm mà vị trí của chúng quyết định hình dạng của đường thẳng, đường cong hay ảnh sẽ dễ dàng kiểm sốt thông qua các phép biến đổi. Phép biến đổi đồ hoạ được mô tả dưới dạng các ma trận tương ứng cho phép thể hiện các sự biến đổi toạ độ của các điểm qua các phép tốn nhân ma trận. Điều đó tạo thuận lợi cho người sử dụng hình dung cũng như thao tác với các đối tượng hình học một cách dễ dàng và đó cũng là một trong những tính năng mạnh của đồ hoạ máy tính. Phép biến đổi vị trí điểm : Giả sử ta có điểm P(x,y) trong mặt phẳng với [ x y ] là vecto vị trí được ký hiệu bằng [X] và ma trận 2x2 [T] là ma trận biến đổi với Điểm P’ qua phép biến đổi có giá trị { x’ y’ ] với phương trình sau : Theo phương trình trên giá trị tương ứng của x’ = ax + cy và y’ = bx + dy, khảo sát ma trận biến đổi [T] với các tham số ta có : Phép biến đổi bất biến : Với phép biến đổi tịnh tiến thì a = d = 1 và b = c = 0 khi đó ma trận biến đổi có dạng : Khi đó điểm P’ qua phép biến đổi tịnh tiến có giá trị [ x’ y’ ] với phương trình sau : Với phép biến đổi trên ta có : x’ = x + dx y’ = y + dy Trong đó : - dx hệ số tịnh tiến theo x - dy hệ số tịnh tiến theo y Phép biến đổi tỷ lệ : Xét trường hợp d = 1 và b = c = 0 phương trình được viết lại : Với kết quả thu được x’= ax và ý = y, điểm P’ dịch chuyển theo trục x với tỷ lệ a xá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 và a, d là các giá trị bất kỳ thì phương trình sẽ mở rộng và thu được Phép biến đổi tỉ lệ được thực hiện trên cả hai trục tọa độ x và y. Nếu x # y thì tỷ lệ trên hai trục không bằng nhau. Nếu a = d > 1 thì phép biến đổi thu được là phép phóng to và ngược lại với 0 < a = d < 1 thì phép biến đổi tương ứng là thu nhỏ. Nếu một trong hai giá trị a hoặc d = 1 ta sẽ có phép lấy đối xứng trên các trục tương ứng, và khi cả hai a và d đếu bằng –1 thì phép biến đổi thu được sẽ là phép lấy đối xứng qua gốc tọa độ. Phép biến dạng : Khi a và d = 1 bất biến thì tọa độ của P’ phụ thuộc vào sự thay đổi của b và c, Giả sử với c = 0. Ta có : Điểm P’ thu được sẽ không thay đổi giá trị tọa độ x còn giá trị ý biến đổi không chỉ theo b mà còn phụ thuộc vào cả x. Và điều đó ngược lại khi chúng ta thay đổi với a = d = 1; b= 0; hiệu ứng biến dạng sẽ xảy ra theo trục y. Điểm gốc tọa độ sẽ bất biến qua mọi phép biến đổi. Điều đó được chứng minh qua phương trình sau với điểm P = [0 0] trùng với gốc tọa độ. P’ x’ = cy + x Y=bx+y Cy P P’ P bx 0 1 2 3 0 1 2 3 Phép biến dạng theo trục y Phép biến dạng theo trục x Phép biến đổi tổng hợp : Phương pháp biến đổi sử dụng phép nhân ma trận với tọa độ điểm thông qua các vectơ vị trí thật sự hiệu quả và đem lại công cụ và đem lại công cụ mạnh về đồ họa cho người sử dụng. Tuy nhiên những thao tác thường cần không chỉ một mà rất nhiều các phép biến đổi khác nhau. Phép hốn vị khi nhân ma trận không được cho phép thực hiện nhưng khả năng tổ hợp các phép nhân lại cho phép tạo ra một ma trận biến đổi duy nhất. Điều đó làm giảm bớt được khối lượng đáng kể các phép tính tốn trong quá trình biến đổi, làm tăng tốc đáng kể các chương trình ứng dụng và tạo điều kiện cho việc quản lý các biến đổi trong ứng dụng. Giả sử ta có điểm P với tọa độ [X] = [x y] và 2 phép biến đổi là [T1], [T2] với Quay điểm P quanh gốc tọa độ một góc 900 và Lấy đối xứng qua gốc tọa độ Ta có : Là tọa độ [X’] của P’ qua phép biến đổi [T1] và Là tọa độ của P’ qua [T2] Giả sử ta có [T3] là ma trận biến đổi tổng hợp của hai ma trận [T1] và [T2], giá trị sau khi biến đổi [x y] qua [T3] thu được có dạng : Điều đó đúng với mọi phép biến đổi [T1] và [T2] chúng ta có thể nói việc biến đổi qua nhiều ma trận thành phần sẽ tương đương với phép biến đổi qua ma trận tổng hợp từ các phép biến đổi đó. Phép Quay : Giả sử ta có điểm P với tọa độ ban đầu là (x, y) hay tương ứng với ma trận [ x y ] qua phương pháp biểu diễn vector ( hình dưới ) làm thành với trục X một góc a. Cho P quay quanh gốc tọa độ O một góc b có bán kính tương ứng là r thu được điểm P’. Qua hình vẽ giá trị P và P’ có dạ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 phép biến đổi lượng giác được đưa về dạng : P’ = [ x’ y’ ] = [ r(cosa. cosb - sina.sinb) r(cosa. sinb + sina.cosb)] (3) Từ (1) và (3) ta có : 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 Phép biến đổi thông qua cách viết ma trận có dạng sau : [X’] = [X].[T] = [x’ y’] = [x y].[x. cosb - y.sinb x.sinb + y.cosb] Như vậy ma trận biến đổi tổng quát [T] khi quay một điểm quanh gốc tọa độ dưới một góc a bật kỳ có dạng : Giá trị dương thu được khi góc quay ngược chiều kim đồng hồ. Giả sử khi quay P một góc -a thì ma trận [T] có thể tính được như sau : Từ các phép biến đổi trên đưa vào bài tốn đang xây dựng ta cần chọn trên mỗi tấm Film Slide hai điểm chuẩn (Rappo1 và Rappo2), sau đó ta chọn tấm Film Slide đầu tiên (Gọi là lớp 0) hai điểm chuẩn đánh dấu “+” sau đó tất cả các tấm Film Slide sau cũng đều đánh dấu “+” trùng với tấm đầu tiên. Như vậy sau khi quét vào máy nhiệm vụ của ta là phải dùng 2 phép biến đổi trên để đưa các điểm Rappo của các tấm Film Slide sau (Từ lớp 1 trở đi) trùng với 2 điểm Rappo của lớp 0 : bằng cách dịch điểm Rappo1 của các lớp 1,2, … trùng với điểm rappo1 của lớp 0, sau đó xoay điểm Rappo2 quanh điểm Rappo1 để trùng với điểm Rappo2 của lớp 0 như vậy ta được các tấm Film Slide trùng khít lên nhau. PHẦN III : TÌM HIỂU MỘT SỐ FILE ẢNH VÀ HỆ MÀU I. Tìm hiểu một số File ảnh : File ảnh PCX : Cấu trúc của PCX Header : Có chiều dài là 128 bytes. Header được chia làm 3 vùng : Vùng 1 : các thông tin chính bao gồm password, version, kiểu nén, số bits lưu trữ mỗi pixel, kích thước ảnh, độ phân giải ngang, dọc. Vùng 2 : Các thông tin về Palette. Vùng 3 : Các thông tin phụ trợ bao gồm : video mode, số planes màu, số bytes mỗi dòng quét, kiểu Palette… Nội dung Header được mô tả chi tiế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 Các thông tin chính : Password = A0h : dạng tập tin PCX. Version : có các giá trị : 0 : version 2.5 2 : version 2.8 ( có Palette) 3 : Version 2.8 ( không có Palette) 4 : PC Paintbrush for Windows 5 : version 3.0 hay lớn hơn. Encode = 1 (run – length) : mã dạng tập tin PCX thông thường. Bits per pixel : số bit dành cho một pixel trên một plane. Đối với ảnh VGA 16 màu, 4 planes, một pixel ảnh cần 4 bit và một bit trên một plane thì bits per pixel = 4. Đối với ảnh VGA 256 màu, 1 planes, một pixel cần 8 bit thì bits per pixel = 8. Windows là một bộ bốn (x1, y1, x2, y2) xác định tọa độ góc trái bên trên và góc phải bên dưới của cửa sổ hình chữ nhật trên màn hình mà ảnh hiện lên, Window xác định kích thước của ảnh. Đối với tập tin PCX, (x1, y1) là góc trái bên trên màn hình (x1 = y1 = 0) và (x2 = xmax, y2 = ymax) là góc phải bên dưới tùy theo mode màn hình. Hres, Vres : độ phân giải ngang, dọc của màn hình. Các thông tin phụ trợ : Video mode : vùng này thường được bỏ qua và có giá trị 0. Num of planes : là số planes cần thiết để lưu trữ 1 pixel. Thường số planes bằng số bit cần thiết để lưu trữ 1 pixel. Để biết giá trị của một pixel thì phải đọc đồng thời trên tất cả các planes, do đó tốc độ bung ảnh sẽ chậm. Giá trị của num of planes liên quan đến giá trị lưu tại bits per pixel. Bytes per line : là số byte cần thiết cho một dòng quét trên màn hình cho 1 plane. Với PCX, BytesPerLine = (Hres * BitsPerPixel) / 8. Với độ phân giải 640 * 480 : BitsPerPixel = 1, BytesPerLine = 80. Palette info : cho biết ảnh thuộc loại màu (color / mono) Unused : là vùng không dùng đến. Vùng dữ liệu : Dữ liệu ảnh được sắp xếp thứ tự từ trái qua phải và từ trên xuống dưới. Mỗi dòng quét ảnh được mã hóa riêng theo giải thuật run-length. Dữ liệu ảnh mono được hưu như bitmaps. Bảng màu : Bảng màu có kích thước 769 bytes. Bảng màu là nơi lưu trữ các phần cơ bản tạo nên màu của các pixel được lưu trữ trong vùng sự liện. Tỷ lệ các thành phần cơ bản (red, green, blue) khác nhau sex tạo nên màu khác nhau. Do đó, tỷ lệ này cần lưu trữ trong header đồng thời với việc lưu trữ để hình ảnh được trung thực khi hiện lên màn hình máy tính. Thường với mode EGA / VGA có 16 thanh ghi Palette nên vùng lưu trữ thông tin về bảng màu ở header gồm 16 * 3 = 48 bytes. Mỗi thanh ghi Palette tương ứng với một bộ phận 3 thành phần màu cơ bản tương ứng với màu chỉ ra bởi Palette ở hình dưới : … Red Green Blue … Bảng màu Do đó, trước khi hiển thị, thông tin về bảng màu cần được nạp trở lại các thanh ghi Palette trong adaptor màn hình. File ảnh TIFF : File ảnh Tiff được thiết kế làm giảm nhẹ bớt các vấn đề liên quan đến việc mở rộng file ảnh cố định, về cấu trúc nó cũng gồm ba phần chính : Phần Header (IFH) : có trong tất cả các file Tiff : 1 word : chỉ ra kiểu sử dụng để tạo file do máy PC hay Macintosh, hai loại này rất khác nhau ở thứ tự các bytes lưu trữ trong các số dài 2 hay 4 bytes. 2 word : version. Từ luôn có giá trị là 42. Có thể coi là đặc trưng của file Tiff vì nó không thay đổi. 3 word : giá trị Offset tính theo byte tính từ đầu file tới cấu trúc IFD (Image File Directory) là cấu trúc thứ hai của file. Thứ tự các bytes ở đây phụ thuộc vào dấu hiệu trường đầu tiên. Phần thứ 2 (IFD) : nó không ở ngay sau IFH mà vị trí nó được xác định bởi trường Offset trong đầu file. Có thể có một hay nhiều IFH cùng tồn tại trong file (nếu file có nhiều hơn một ảnh). Phần này bao gồm : 2 bytes : chứa các DE (Directory Entry) 12 bytes : là các DE xếp liên tiếp. Mỗi DE chiếm 12 bytes. 4 bytes : Offset trỏ tới IFD tiếp theo. Nếu đây là IFD cuối cùng thì trường này bằng 0. Phần thứ 3 : các DE Các DE có độ dài cố định là 12 bytes và chia làm bốn phần : 2 bytes : chỉ ra dấu hiệu mà file ảnh đã được xây dựng. 2 bytes : kiểu dữ liệu tham số ảnh. Có 5 kiểu cơ bả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 độ dài (bộ đếm) chứa số lượng chỉ mục tiêu của dữ liệu đã được chỉ ra. Nó không phải tổng số bytes cần thiết để lưu trữ. Để có số liệu này ta cần nhân chỉ số mục với kiểu dữ liệu đã dùng. 4 bytes : đó là Offset tới điểm bắt đầu dữ liệu thực liên quan với DE không phải lưu trữ vật lý cùng với nó nằm ở 1 vị trí nào đó trong file. Dữ liệu được chứa trong file thường được tổ chức thành các nhóm dòng (cột) quét của dữ liệu ảnh. Cách tổ chức này làm giảm bộ nhớ cần thiết cho việc đọc file. Việc giải nén thực hiện theo 4 kiểu khác nhau được lưu trữ trong dấu hiệu nén. Như đã nói trên, file ảnh TIFF dùng để giải quyết vấn đề khó mở rộng của file PCX. Tuy nhiên, với cùng một ảnh thì việc dùng file PCX chiếm ít không gian nhớ hơn. File ảnh BMP : Cấu trúc file ảnh BMP bao gồm các phần chính sau : BMP Header : được mô tả như sau : Byte# Data Chi tiết 1 – 2 Dấu nhận dạng ‘BM’ 3 – 6 Kích thước file 2 words 7 – 10 Dành riêng Thường là 0 11 – 14 Offset đến Bitmap Data Tính từ đầu file Bitmap Info : được mô tả như sau : Byte# Data Chi tiết 1 – 4 Số byte trong Header Thường là 40 bytes 5 – 8 Chiều rộng của bitmap Bằng pixel 9 – 12 Chiều cao của bitmap Bằng pixel 13 – 14 Số planes màu Thường là 1 15 – 16 Số bit trên pixel 17 – 20 Dạng nén 21 – 24 Kích thước ảnh Bằng bytes 25 – 28 Độ phân giải ngang Bằng pixels / mét 29 – 32 Độ phân giải dọc Bằng pixels / mét 33 – 36 Số màu dùng cho bitmap Thường là 0 (tất cả) 37 – 40 Số màu quan trọng Thường là 0 (tất cả) Dạng nén : 0 : không nén 1 : run – length (8 bits / pixel) 2 : run – length (4 bits / pixel) Color map : mỗi phần tử màu gồm 4 bytes : … Red Green Blue Reserved … Bitmap Data : các pixels được lưu trữ theo hàng, từ trái sang phải cho mỗi dòng, các hàng được lưu trữ từ dưới lên trên. Như vậy, bitmap sẽ được thể hiện từ góc dưới trái. II. Tìm hiểu về hệ màu : Màu sắc đối tượng mà chúng ta quan sát được không chỉ phụ thuộc vào bản thân của đối tượng mà còn phụ thuộc vào nguồn sáng, môi trường xung quanh đối tượng cũng như hệ thống cảm nhận của con người. Một số các đối tượng phản xạ lại các tia chiếu lên chúng (như tường, giấy, kim loại) trong khi một số khác cho ánh sáng đi xuyên qua (như màng mỏng, kính…). Khi một bề mặt chỉ phản xạ các tia sáng xanh dương được chiếu bởi một nguồn sáng đỏ thí nó có màu đen, tương tự khi ánh sáng màu lục được nhìn qua một tấm kính chỉ cho tia sáng đỏ đi qua nó cũng có màu đen. Giác quan thị giác của con người cảm nhận được các vật xung quanh thông qua các tia sáng mầu tốt hơn rất nhiều so với các vật chỉ có hai màu đen trắng. Vì vậy trong kỹ thuật đồ hoạ việc xây dựng nên các đối tượng màu là những lý thuyết cơ bản mà nền tảng cơ sở là lý thuyết về màu sắc. Mô hình màu là một chỉ số kỹ thuật của một hệ toạ độ màu ba chiều và tập các màu nhỏ thành phần có thể trông thấy được trong hệ thống tọa độ màu thuộc một gam màu đặc trưng. Ví dụ như mô hình màu RGB(Red, Green, Blue) là một tập các màu thành phần sắp xếp theo hình lập phương của hệ trục toạ độ Đề các. Mô hình màu RGB (RED-GREEN-BLUE): ĐỎ-LỤC-LAM : Màu đỏ, lục : Xanh lá cây, lam : Xanh da trời (RGB) được sử dụng rộng rãi trên màn hình CRT và các loại màn hình có đồ hoạ Raster màu dựa vào hệ toạ độ Đề các. Gam màu được thể hiện trong hệ màu RGB được xác định bằng những đặc tính của hiện tượng phát quang của các chất phốt pho trong màn hình CRT. Hai màn hình CRT với 2 loại chất phốt pho khác nhau sẽ cho ra các gam màu khác nhau. Sự biến đổi màu được định rõ trong gam màu của một CRT so với gam màu của một CRT khác. Mô hình màu CMY (CYAN, MAGENTA, YELLOW) Xanh tím, đỏ tươi, vàng : Là phần bù tương ứng cho các màu đỏ, lục, lam và chúng được sử dụng như những bộ lọc loại trừ các màu này từ ánh sáng trắng. Vì vậy CMY còn được gọi là các phần bù loại trừ của màu gốc. Tập hợp màu thành phần biểu diễn trong hệ toạ độ Đề các cho mô hình màu CMY cũng giống như cho mô hình màu RGB ngoại trừ màu trắng (ánh sáng trắng) được thay thế màu đen (Không có ánh sáng) ở tại nguồn sáng. Các màu thường được tạo thành bằng cách loại bỏ hoặc được bù từ ánh sáng trắng hơn là được thêm vào những màu tối. Mô hình màu YIQ Mô hình màu YIQ là mô hình màu được ứng dụng trong truyền hình màu băng tần rộng tại Mỹ, và do đó nó có mối quan hệ chặc chẽ với màn hình đồ hoạ màu Raster. YIQ là sự thay đổi của RGB cho khả năng truyền phát và tính tương thích với ti vi đen trắng thế hệ trước. Tín hiệu truyền sử dụng trong hệ thống NTSC (National Television System Committee). Thành phần Y của YIQ không phải là màu vàng mà là thể sáng và được xác định giống như màu gốc Y của CIE. Chỉ riêng thành phần Y của một tín hiệu ti vi màu được thể hiện trên ti vi đen trắng. Màu được mã hố trong 2 thành phần còn lại là I và Q. Màu YIQ sử dụng hệ toạ độ Đề các 3 chiều với tập các thành phần nhìn thấy được biểu diễn như một khối đa diện lồi trong khối lập phương RGB. PHẦN IV : TÌM HIỂU CƠ SỞ DỮ LIỆU CỦA BÀI TỐN Giới thiệu chung về việc chọn màu cho in hoa : Trong thực tế sản xuất, việc chọn màu cho mẫu in căn cứ trên các màu được lưu trong quá trình thử màu tại phòng thí nghiệm. Các màu này được lưu trong sổ lưu mẫu màu (còn gọi là Catalog màu), mỗi loại vải có một Catalog màu khác nhau trong đó có ghi công thức thuốc nhuộm tạo nên màu trong catalog. Khi có mẫu hoa cần in thử, nhân viên thử màu sẽ chọn màu cho mẫu hoa dựa trên các màu đã có sẵn trong Catalog màu, nếu màu khách hàng yêu cầu không có trong Catalog màu thí nhân viên thí nghiệm sẽ tiến hành thí nghiệm để tạo ra màu theo yêu cầu của khách hàng, sau đó lưu vào sổ catalog màu. Ví dụ : Loại vải : Phi bóng (FH03) Màu : GR75 Thành phần thuốc nhuộm : Tỷ lệ - Dianix Yellow Brown FG 2S 0.05% - Dianix Black FK 2S 0.3% - Dianix Rubin RS 3TH 0.5% Cơ sở dữ liệu : Từ thực tế trên, để việc chọn màu bằng chương trình trước tiên ta cần đưa các dữ liệu trong catalog màu vào máy tính dưới dạng cơ sở dữ liệu. Ở đây tôi xây dựng cơ sở dữ liệu bằng Microsoft Access 97. Lược đồ quan hệ : 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) Mô hình tổ chức dữ liệu : LOAIVAI(MSVai, TenVai, PE, Cotton) MAUIN(IDMauin, TenMau, Mau) THUOCNHUOM(MSThuocnhuom, Tenthuocnhuom) TYLE(IDTyle, IDMauin, MSThuocnhuom, IDDonin, Tyle) DONIN(IDDonin, MSVai, ngayin) Mô hình vật lý dữ liệ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 thiết kế bằng Ascess97 được nhúng vào VB6.0 thông qua đối tượng dữ liệu ADO (ActiveX Data Objects). Tìm hiểu về đối tượng ADO : Cho đến VB 5.0 ADO (Dữ liệu đối tượng ActiveX – ActiveX Data Object) trở thành nền tảng của kỹ thuật truy cập cơ sở dữ liệu Internet. Trong VB 6.0, ADO càng quan trọng hơn – mạnh mẽ hơn. Ta có thể dùng ADO không chỉ truy cập cơ sở dữ liệu thông qua trang Web, mà còn có thể dùng nó để lấy dữ liệu từ ứng dụng viết bằng VB. ADO là giao diện dựa trên đối tượng cho công nghệ dữ liệu mới gọi là OLE DB. OLE DB được thiết kế để thay thế ODBC như một phương thức truy cập dữ liệu. ODBC hiện thời là tiêu chuẩn phía Client sử dụng Windows rất phổ biến để truy cập các dữ liệu quan hệ bởi vì nó thiết lập các Server cơ sở dữ liệu quan hệ càng tổng quát càng tốt đến các ứng dụng Client. OLE DB đi sâu hơn một bước, bằng cách làm cho tất cả nguồn dữ liệu trở thành tổng quát đối với ứng dụng Client. Xây dựng ứng dụng VB với ADO : ADO là công nghệ truy cập cơ sở dữ liệu hướng đối tượng tương tự DAO và RDO. ADO hiện nay được Microsoft xem là kỹ thuật để truy cập cơ sở dữ liệu từ Web server. Bởi vì ADO được cung cấp dưới dạng thư viện ActiveX Server (tương tự DAO và RDO), ta có thể thoải mái dùng ADO trong ứng dụng VB. Trong thực tế, bằng nhiều cách, ta sẽ thấy rằng sử dụng ADO để làm việc với cơ sở dữ liệu Client/Server thì dễ hơn các kỹ thuật khác. Phần lớn các lập trình viên VB không tương tác trực tiếp với OLE DB. Thay vào đó, họ lập trình với ADO, mô hình đối tượng cung cấp giao tiếp với OLE DB. Trình cung cấp OLE DB không nhiều như các trình điều khiển ODBC, nhưng số lượng này đã tăng lên đáng kể từ khi ADO 2.0 được phát hành vào năm 1998. Phiên bản này đã được đưa vào VB 6.0, bao gồm các trình cung cấp cục bộ cho SQL server, Microsoft Jet/Accesss. Ta chỉ cần lập trình với phần giao diện người sử dụng ở phía Client. Bởi vì việc truy cập dữ liệu trên cả trình duyệt Web và ứng dụng VB được chuyển hết về phía ActiveX Server, ta có thể bảo đảm rằng logic chương trình luôn nhất quán, bất kể loại ứng dụng nào đang được dùng. Cài đặt và thiết lập tham chiếu đến ADO trong ứng dụng Visual Basic : ADO được cài đặt như một phần của Visual Basic 6.0 Sau khi cài đặt xong, ta bắt đầu sử dụng nó bằng cách thiết lập tham chiếu đến thư viện ADO trong ứng dụng VB, tương tự như khi thiết lập tham chiếu đến DAO. PHẦN V : THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH Cấu trúc chương trình : v Các chức năng chính của chương trình Tạo các lớp Film slide từ File ảnh đen trắng (Dùng Scaner) Điều chỉnh các lớp Film trùng khít lên nhau (Qua 2 điểm Rappo) Chọn màu cho các lớp Film từ CSDL màu Thiết kế theo chức năng của chương trình thì ta có biểu đồ phân bố chức năng của chương trình như sau : Chương trình chọn màu cho mẫu hoa Điều chỉnh các lớp Film trùng Rappo Chọn màu cho các lớp Film từ CSDL màu Tạo các lớp Film Slide trên máy tính Ngồi ra khi chúng ta tiến hành cài đặt chương trình chúng ta cần phải thực hiện qui tắc chung là giao tiếp người – máy, do đó cần phải có thêm công cụ trợ giúp cho quá trình chọn màu cho mẫu hoa bằng máy tính. v Giao diện chính của chương trình : Chọn lớp CSDL màu Xem tất cả các lớp đã có Xóa trắng màn hình Xem lại lớp(Slide) Tạo lớp (Slide) Lấy lớp Chương trình được viết bằng Visual Basic 6.0 chạy trên Hệ điều hành Windows . CSDL được thiết kế bằng Ascess97 được nhúng vào VB6.0 thông qua đối tượng dữ liệu ADO (ActiveX Data Objects) Thực nghiệm chọn màu một mẫu hoa : Sau khi cài đặt chương trình, chúng ta tiến hành thực nghiệm chọn màu cho một mẫu hoa để đánh giá kết quả. Sau đây là một số thực nghiệm thu được : Từ bộ mẫu Film slide, ta scan vào máy tính với các tập tin sau : Class1.wfm, Class2.Wfm, Class3.Wfm, Class4.Wfm, Class5.Wfm, Class6.Wfm, Class7.Wfm Sau đó lần lượt tạo thành các lớp trong chương trình là : Class1, Class2, Class3, Class4, Class5, Class6, Class7. Điều chỉnh Rappo và chọn màu từ CSDL màu : Sau khi đã chọn các lớp và chọn các điểm rappo chuẩn, ta chọn nút lệnh preview, nút lệnh này sẽ gọi thủ tục Preview() tiến hành tính tốn điều chỉnh các các lớp cho trùng khít . Nhập cơ sở dữ liệu màu vào chương trình : Căn cứ vào Catalog màu của phòng thí nghiệm người sử dụng chương trình sẽ tiến hành quét mẫu màu và dữ liệu thuốc in vào thông qua Form Datainput và lưu vào CSDL của chương trình Từ ô mẫu màu bên phải người sử dụng điều chỉnh ba thông số RBG để đạt được màu như màu CATALOG. Một số thủ tục chính trong chương trình : a. Thủ tục lấy File từ ổ đĩa và tạ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. Thủ tục chọn mà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. Thủ tục điều chỉnh Rappo trùng khít lê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. Thủ tục lấy mà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 Thủ tục tạ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 PHẦN VI : NHẬN XÉT Sau khi tìm hiểu và thực hiện chương trình, tôi thấy đây là một đề tài rất thiết thực trong thực tế sản xuất của nhà máy, nó giúp cho công đoạn thử mẫu hoa được tiến hành nhanh chóng, tiết kiệm thời gian và chi phí sản xuất thử. Nội dung chính của chương trình giải quyết được các vấn đề sau : Tạo được các Film slide trên máy tính. Điều chỉnh các Film Slide trên máy trùng khít với nhau. Chọn màu theo dữ liệu màu đã có sẵn. Tạo thành bộ mẫu hoa hồn chỉnh trên máy tính Tuy nhiên do thời gian có hạn nên đề tài chưa được nghiên cứu sâu nhằm cải thiện giao diện người – máy cũng như tính dễ dùng của chương trình, chương trình có thể mở rộng ra cho công việc tính tốn lượng hóa chất thuốc nhuộm tiêu tốn khi in chính thức mẫu hoa giúp cho công việc thống kê và tính tốn giá thành sản phẩm. Một lần nữa xin chân thành cảm ơn thầy Nguyễn Đình Thuân, các bạn sinh viên cùng lớp và các đồng nghiệp tại nhà máy dệt Tân Tiến đã hướng dẫn và giúp đỡ tôi hồn thành đề tài này. Nguyễn Hồng Hải Mục lục Trang Lời nói đầu 2 Phần I : Giới thiệu công nghệ sản xuất vải in hoa 5 1. Công nghệ in hoa 5 2. Giới thiệu bài tốn 6 Phần II : Các phép biến đổi để lớp Film trùng khít nhau 8 I. Các khái niệm tổng quan của KT đồ hoạ 8 II. Phép biến đổi để các lớp Film trùng khít 10 1. Tạo lớp Film 10 2. Các phép tốn điều chỉnh trùng khít 11 Phần III. Tìm hiểu một số File ảnh vàhê5 màu 18 I. Tìm hiểu một số file ảnh 18 II. Tìm hiểu về hệ màu 23 Phần IV. Tìm hiểu cơ sở dữ liệu của bài tốn 25 1. Giới thiệu chung về việc chọn màu in hoa 25 2. Cơ sở dữ liệu 25 3. Tìm hiểu về đối tượng ADO 27 4. Xây dựng ứng dụng VB với ADO 27 5. Cài đặt và thiết lập tham chiếu đến ADO 28 Phần V : Thiết kế và cài đặt chương trình 29 1. Cấu trúc chương trình 29 2.Thực nghiệm chọn màu một mẫu hoa 30 3. Một số thủ tục chính trong chương trình 33 Phần VI : Nhận xét 54 Mục lục 55 Tài liệu tham khảo 56 TÀI LIỆU THAM KHẢO Visual Basic 6.0 và lập trình Cơ sở dữ liệu – NXB giáo dục 2000 Kỹ thuật đồ họa – NXB Khoa học và kỹ thuật Lê Tuấn Hùng Huỳnh Quyết Thắng Nhập môn xử lý ảnh số – NXB Khoa học và kỹ thuật Lương Mạnh Bá Nguyễn Thanh Thủy

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

  • doc[TRANGLUANVAN]16 - DOWNLOAD.doc
Tài liệu liên quan