Đăng ký Đăng nhập

Tài liệu Csi101x_asm_1_withinstruction

.PDF
8
675
89

Mô tả:

Môn csi funix
Module/môn:​ ​CSI101x Giới thiệu về khoa học máy tính Số hiệu assignment: 1/3 Người điều phối của FUNiX: Phan Trường Lâm Ngày​ ​ban​ ​hành:​ ​04/2016 Bài assignment này đòi hỏi sinh viên phải dùng khoảng 2h làm để hoàn thành Tương ứng với outcome môn học: ● CSI101x_o7 Hiểu về biến, cách khai báo, gán giá trị và sử dụng biến trong lập trình. Hiểu cách load, xử lý một điểm ảnh ● CSI101x_o8 Hiểu và sử dụng được cấu trúc lặp for ● CSI101x_o9 Hiểu, biết cách viết biểu thức tính toán trong lập trình ● CSI101x_o4 Gian lận là hình thức lấy bài làm của người khác và sử dụng như là mình làm ra. Hình thức đó bao gồm những hành động như: copy thông tin trực tiếp từ trang web hay sách mà không ghi rõ nguồn tham khảo trong tài liệu; gửi bài assignment làm chung như là thành quả cá nhân; copy bài assignment của các sinh viên khác cùng khóa hay khác khóa; ăn trộm hay mua bài assignment của ai đó và gửi lên như là sản phẩm mình làm ra. Những sinh viên bị nghi ngờ gian lận sẽ bị điều tra và nếu phát hiện là có gian lận thì sẽ phải chịu các mức phạt theo quy định của Nhà trường. Mọi tài nguyên copy hay điều chế từ bất cứ nguồn nào (VD: Internet, sách) phải được đặt trong cặp dấu nháy kép và in nghiêng, với thông tin tham khảo đầy đủ về nguồn tài liệu. Bài làm của bạn sẽ được đưa vào phần mềm kiểm tra gian lận. Mọi hình thức cố tình đánh lừa hệ thống phát hiện gian lận sẽ bị coi là Vi phạm quy định trong thi cử. Quy định nộp bài assignment ● Sinh viên phải nộp bài trên hệ thống LMS và tuân theo các yêu cầu nộp bài quy định trên đó. Quy định đánh giá bài assignment ● Sinh viên không có bài assignment sẽ bị 0 (không) điểm bài assignment. ● Các trường hợp gian lận sẽ bị đánh trượt cả môn. ​​ ======================== Assignment​ ​1 Mục tiêu Làm quen với lập trình: - Biến, biểu thức tính toán - Cấu trúc lặp Các công cụ cần có Web​ ​browser Vào địa chỉ tham khảo [1]​ (link mở sang tab mới), vào phần bài tập (Exercise) nào đó, sau đó gõ code vào ô text và ấn nút Run để chạy. Tài​ ​nguyên Tham khảo ĐỀ BÀI Viết chương trình (đoạn code) bằng ngôn ngữ sử dụng trong khóa học (Javascript) để lọc nhiễu cho một bức ảnh. HƯỚNG DẪN Bức ảnh ban đầu trông như sau: 1. Làm nhiễu ảnh Một dạng nhiễu ảnh hay gặp là các chấm nhỏ li ti màu đen, đỏ, xanh trắng che đi một phần ảnh gốc do giá trị Red, Green, Blue hoặc cả 3 giá trị bị truyền sai hay không nhận được. Đoạn code sau đây giả lập trường hợp ảnh bị "nhiễu" ngẫu nhiên: image​ ​=​ ​new​ ​SimpleImage("flowers.jpg"); for​ ​(i​ ​=​ ​0;​ ​i​ ​<​ ​2000;​ ​i++)​ ​{ ​ ​x​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(width​ ​-​ ​1)); ​ ​y​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(height​ ​-​ ​1)); ​ ​pixel​ ​=​ ​image.getPixel(x,​ ​y); ​ ​pixel.setRed(255); ​ ​pixel.setGreen(255); ​ ​pixel.setBlue(255); } for​ ​(i​ ​=​ ​0;​ ​i​ ​<​ ​2000;​ ​i++)​ ​{ ​ ​x​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(width​ ​-​ ​1)); ​ ​y​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(height​ ​-​ ​1)); ​ ​pixel​ ​=​ ​image.getPixel(x,​ ​y); ​ ​pixel.setRed(255); ​ ​pixel.setGreen(0); ​ ​pixel.setBlue(0); } for​ ​(i​ ​=​ ​0;​ ​i​ ​<​ ​1000;​ ​i++)​ ​{ ​ ​x​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(width​ ​-​ ​1)); ​ ​y​ ​=​ ​Math.floor(Math.random()​ ​*​ ​(height​ ​-​ ​1)); ​ ​pixel​ ​=​ ​image.getPixel(x,​ ​y); ​ ​pixel.setRed(0); ​ ​pixel.setGreen(0); ​ ​pixel.setBlue(255); } //​ ​Your​ ​code​ ​is​ ​here //​ ​End​ ​of​ ​your​ ​code ​ ​print(image) Chạy đoạn code trên tại ô Text và nhấn nút Run để chạy. Kết quả nhận được là ảnh sau: 2. Thuật toán lọc nhiễu Thuật toán lọc nhiễu đơn giản nhất mà vẫn đạt hiệu quả tương đối cao là "median filter" (lọc giá trị trung bình) được mô tả sau đây. Bước 1: Lấy ra vùng ô vuông bức ảnh có kích thước 3x3 (9 pixels). Lấy các giá trị Red, Green, Blue của mỗi pixel, lưu vào 3 mảng gồm 9 phần tử. Mỗi mảng ứng với 1 màu red, green và blue. Mỗi phần tử của mảng là giá trị của kênh màu tương ứng. Cú pháp khai báo mảng trong JavaScript như sau: var [tên_mảng] = {phần_tử_1, phần_tử_2, ..., phần_tử_n} Ví dụ: Bức ảnh kích thước 3x3 có các giá trị pixel như sau: 34​,​ ​56​,​ ​72 76​,​ ​123​,​ ​34 57​,​ ​28​,​ ​195 235​,​ ​213​,​ ​12 34​,​ ​76​,​ ​186 195​,​ ​46​,​ ​24 24​,​ ​59​,​ ​123 27​,​ ​244​,​ ​177 75​,​ ​93​,​ ​76 Ta khai báo mảng red: var​ ​red​ ​=​ ​{​34,​ ​235,​ ​24,​ ​76,​ ​34,​ ​27,​ ​57,​ ​195,​ ​75​} Tương tự với green và blue. Bước 2: Sắp xếp các phần tử trong mảng theo thứ tự từ bé đến lớn. Cú pháp để sắp xếp trong JavaScript như sau: [tên_mảng].sort() Ví dụ: Với mảng được cho trong ví dụ ở bước 1. Sau câu lệnh: red.sort() ta nhận được kết quả là: red​ ​=​ ​{​24,​ ​27,​ ​34,​ ​34,​ ​57,​ ​75,​ ​76,​ ​195,​ ​235​} Bước 3: Lấy giá trị của phần tử ở chính giữa mảng nhận được, gán cho pixel ở chính giữa vùng ảnh đang được duyệt. Ví dụ: Lấy giá trị chính giữa mảng red là 57, chính giữa mảng green là 93, chính giữa mảng blue là 76 gán cho pixel chính giữa vùng ảnh 3x3 (được bôi vàng) ở trên. Vùng ảnh sẽ trở thành: 34​,​ ​56​,​ ​72 76​,​ ​123​,​ ​34 57​,​ ​28​,​ ​195 235​,​ ​213​,​ ​12 57​,​ ​93​,​ ​76 195​,​ ​46​,​ ​24 24​,​ ​59​,​ ​123 27​,​ ​244​,​ ​177 75​,​ ​93​,​ ​76 Bước 4: Duyệt tất cả các vùng ảnh 3x3 trong bức ảnh và lặp lại các bước từ 1 đến 3. Ví dụ: Với ảnh 5x5 sau (mỗi p1​,​ ​p​2​,​ ​...,​ ​p​n​ là các pixel thứ 1, thứ 2, ..., thứ n) p​1 p​2 p​3 p​4 p​5 p​6 p​7 p​8 p​9 p​10 p​11 p​12 p​13 p​14 p​15 p​16 p​17 p​18 p​19 p​20 p​21 p​22 p​23 p​24 p​25 Các vùng ảnh cần duyệt là: Viết thêm đoạn code theo đúng các bước được mô tả trong thuật toán trên vào đoạn giữa 2 dòng: //​ ​Your​ ​code​ ​is​ ​here //​ ​End​ ​of​ ​your​ ​code Trong đoạn code cho sẵn ở phần 1. Chạy chương trình để được ảnh kết quả gần giống ảnh nguyên dạng như sau: MÔ TẢ SẢN PHẨM PHẢI NỘP Sản phẩm là file mã nguồn của chương trình (file text), 1 ảnh được làm nhiễu, 1 ảnh sau khi lọc nhiễu. NƠI NỘP BÀI Nộp theo hướng dẫn trên LMS THANG​ ​ĐÁNH​ ​GIÁ​ ​(RUBRICS) Tiêu​ ​chí​ ​(criteria) Mô tả CSI101x_o4: Hiểu về biến, cách khai báo, gán giá trị và sử dụng biến trong lập trình CSI101x_o7: Hiểu cách load, xử lý một điểm ảnh Khai báo được 3 mảng ứng với 3 kênh​ ​màu CSI101x_o8: Hiểu và sử dụng được cấu trúc lặp for Gán được giá trị các kênh màu của pixel chính giữa vùng đang duyệt bằng giá trị phần tử nằm chính giữa mảng Duyệt được hết các vùng ô vuông 3x3 trong ảnh dùng vòng lặp for Điểm thành phần 2 3 2 CSI101x_o9: Hiểu, biết cách viết biểu thức tính toán trong lập trình Sử dụng được hàm sort() - 1 điểm Cho ra kết quả ảnh nhiễu đúng 1 điểm Cho ra kết quả ảnh sau khi lọc nhiễu đúng - 1 điểm 3 Lưu ý: điểm thành phần cần làm tròn đến 0,5. CSI101x​ ​- Giới thiệu về khoa học máy tính ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​Assignment​ ​1 ​
- Xem thêm -

Tài liệu liên quan