xulyanh tp b1
TRANSCRIPT
![Page 1: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/1.jpg)
THỰC HÀNH XỬ LÝ ẢNH
1. Buổi 1● Giúp hiểu được các định nghĩa liên quan đến ảnh, các kỹ thuật xử lý ảnh thông qua công cụ xử
lý ảnh Photoshop● Làm quen với QT Creator
2. Buổi 2● Sử dụng QT Creator để thực hiện phép xử lý ảnh cơ bản
3. Buổi 3● Xử lý lân cận
4. Buổi 4● Các kỹ thuật phát hiện và xử lý đường biên
5. Buổi 5● Lập trình 1 ứng dụng xử lý ảnh đơn giản
6. Buổi 6● Thi thực hành
![Page 2: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/2.jpg)
BUỔI 1
I. Mục đíchII. Photoshop
1. Hệ màu của ảnh2. Các định nghĩa liên quan đến ảnh
a. Độ phân giải hiển thị (độ phân giải điểm ảnhresolution)b. Độ phân giải màu – độ sâu màuc. Tổ chức đồ (histogram)
3. Các kỹ thuật xử lý ảnha. Xử lý ảnh dựa trên “tổ chức đồ” của ảnhb. Chuyển ảnh mức xám về ảnh nhị phân (phân ngưỡng) : thresholdingc. Một số toán tử logic trên ảnhd. Một số bộ lọc trong photoshopi. Tăng độ rõ nét của ảnh – Sharpenii. Làm mờ ảnh – bluriii. Bộ lọc Medianiv. Bộ lọc thượng thông (highpass)v. Tìm đường biên
III. QT Creator1. Download và cài đặt2. Sử dụng Qt Creator
a. Tạo dự án mới (create Project)b. Tổ chức của dự ánc. Thiết kế giao diện và xử lý sự kiện
I. Mục đích● Giúp hiểu được các định nghĩa liên quan đến ảnh, các kỹ thuật xử lý ảnh thông qua công cụ xử
lý ảnh Photoshop● Làm quen với QT Creator
II. Photoshop
1. Hệ màu của ảnh:
Các thành phần màu của 1 ảnh được hiển thị tại menu “Channels” (Window > Channels)Cách chọn và thay đổi hệ màu của một ảnh: “Image” > “Mode” > hệ màu
![Page 3: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/3.jpg)
Ví dụ 1: ảnh được tổng hợp đầy đủ 3 màu RGB
Ví dụ 2: ảnh được tổng hợp từ 2 màu xanh lá và xanh dương
Các bạn tiếp tục thực hành thay đổi các hệ màu khác như ảnh mức xám, ảnh màu được tổng hợp theo mô hình CMYK
2. Các định nghĩa liên quan đến ảnh
a. Độ phân giải hiển thị (độ phân giải điểm ảnhresolution)
Độ phân giải điểm ảnh chính là số lượng điểm ảnh có thể hiển thị trên mỗi chiềuð Xem sự thay đổi chất lượng ảnh khi thay đổi
∙ số pixels hiển thị trên 1 inch (độ phân giải điểm ảnh)∙ số pixels hiển thị trên chiều dài, chiều rộng ảnh (độ phân giải không
gian)
![Page 4: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/4.jpg)
b. Độ phân giải màu – độ sâu màu
Độ phân giải màu là số màu phân biệt có thể hiển thị được ó Ảnh có độ sâu màu lớn hơn có khả năng hiển thị nhiều màu sắc hơn, hoặc hiển thị màu sắc “mịn” hơn.
c. Tổ chức đồ (histogram)
Biểu diễn sự phân bố mức xám/màu của ảnh (đếm số điểm ảnh trên mỗi mức xám), được sử dụng để tìm ra đặc trưng của ảnhMenu Window > histogram
Độ sáng tối, độ tương phản của ảnh (Brightness,constract) Để thay đổi độ sáng tối của ảnh: Image > Adjustments > Brightness/Contrast
![Page 5: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/5.jpg)
Khi thay đổi độ sáng tối, tương phản của ảnh thì tổ chức đồ của ảnh cũng sẽ thay đổi theo.
3. Các kỹ thuật xử lý ảnh
a. Xử lý ảnh dựa trên “tổ chức đồ” của ảnh
Tổ chức đồ: áp dụng làm thay đổi độ sáng tối (trượt tổ chức đồ), độ tương phản của ảnh (căng tổ chức đồ, biến đổi tuyến tính, cân bằng tổ chức đồ)∙ Để thay đổi độ sáng tối của ảnh thì chúng ta sẽ sử dụng kỹ thuật “trượt tổ chức
đồ”o Trượt về bên phải để tăng độ sáng của ảnho Trượt về bên trái để tăng độ tối của ảnh
![Page 6: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/6.jpg)
∙ Để thay đổi độ tương phản của ảnh thì ta sử dụng kỹ thuậto “căng tổ chức đồ”
§ Thu hẹp chân tổ chức đồ > giảm độ tương phản ảnh§ Mở rộng chân tổ chức đồ > tăng độ tương phản
o “biến đổi tuyến tính”: kết hợp giữa trượt và căng tổ chức đồ để có được tổ chức đồ tối ưu => trượt về trái (mức xám min =0), căng tổ chức đồ: max mức xám = 255
o “cân bằng tổ chức đồ”: điều chỉnh sự phân bố mức độ mức xám của ảnh sao cho tổ chức đồ của ảnh ít lồi lõm
b. Chuyển ảnh mức xám về ảnh nhị phân (phân ngưỡng) : thresholding
Chuyển ảnh bất kỳ về ảnh nhị phân:Image > Adjustments > ThresholdThay đổi giá trị của ngưỡng để có những ảnh trắng đen khác nhau
c. Một số toán tử logic trên ảnh:
Cộng 2 ảnh: kết hợp 2 layer lại với nhau
![Page 7: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/7.jpg)
d. Một số bộ lọc trong photoshop
Bộ lọc trong photoshop giúp xử lý các ảnh không hoàn hảo, hoặc thêm các hiệu ứng lên ảnh
i. Tăng độ rõ nét của ảnh – SharpenLàm rõ nét của ảnh hoặc 1 phần của ảnh bằng cách tăng độ tương phản của các pixel liền kề(a) Filter > Sharpen > Sharpen: làm rõ bằng cách tăng độ tương phản giữa
các pixel trong vùng chọn hay trong ảnh.Tuy nhiên ảnh có thể xuất hiện các hạt vào các vùng đồng nhất
(b) Filter > Sharpen > Sharpen Edges: tập trung vào các mép của ảnh. Thêm độ rõ nét mà không làm cho ảnh có hạt hoặc cát
(c) Filter > Sharpen > Sharpen More(d) Filter > Sharpen > Unsharp Mask: xử dụng kỹ thuật trong phòng tối: 2
ảnh ghép đôi lại với nhau – vùng sáng và vùng tối loại trừ lẫn nhau.
ii. Làm mờ ảnh – blur(a) Filter > Blur > Average : bộ lọc trung bình (thay thế các giá trị 1 điểm ảnh
bằng giá trị trung bình của các điểm ảnh lân cận) cho phép làm trơn ảnh, giảm nhiễu, giảm các chi tiết không quan trọng và làm nhòe đường biên
(b) Filter > Blur > Blur : làm mờ toàn bộ ảnh
![Page 8: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/8.jpg)
(c) Filter > Blur > Blur More: làm mờ toàn bộ ảnh với với cường độ mờ cao hơn
(d) Filter > Blur > Gaussian Blur: sử dụng bộ lọc Gaussian làm mờ ảnh và cho phép điệu chỉnh độ mờ của ảnh.
(e) Filter > Blur > Motion Blur: mô phỏng độ mờ xuất hiện trong các đối tượng chuyển động.
(f) Filter –> Blur > Radial Blur: tạo kiểu mờ như khi chụp một lớp bánh xe hơi đang quay
(g) Filter –> Blur > Smart Blur: cho phép áp dụng độ mờ vào các mép và những chi tiết khác của ảnh
iii. Bộ lọc MedianBộ lọc Median (thay thế giá trị 1 điểm ảnh bằng giá trị trung vị của các điểm ảnh lân cận) cho phép khử nhiễu dạng muối tiêu tốt hơn so với bộ lọc trung bình và bộ lọc Gauss(a) Filter > Noise > Add Noise : tạo hiệu ứng hạt cho ảnh
![Page 9: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/9.jpg)
(b) Filter –> Noise > Median : khử nhiễu (làm giảm hạt trong ảnh) – ngược lại với hiệu ứng “Add noise”
(c) Filter –> Noise > Despeckle: bộ lọc làm cho các chấm bụi trong ảnh ít chú ý hơn bằng cách giảm độ tương phản của toàn bộ ảnh (trừ các mép)
(d) Filter –> Noise > Dust& Scratches: bộ lọc tập trung hiệu ứng làm mờ trên các vùng của ảnh vốn chưa các vệt trầy xướt.
iv. Bộ lọc thượng thông (highpass)(a) Filter –> Other > High Pass: bộ lọc thượng thông giữ lại những thành phần
tần số cao, làm nổi rõ chi tiết và đường biên > được áp dụng để tìm đường biên ảnh.High pass là bộ lọc trái ngược với bộ lọc Gaussian Blur
![Page 10: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/10.jpg)
v. Tìm đường biênFilter –>Stylize > Find Edges
III. QT Creator
1. Download và cài đặt
Qt là ứng dụng crossplatform và là framework giao diện người dùng (UI) cho các nhà phát triển sử dụng ngôn ngữ C++ hoặc QML (ngôn ngữ kiểu CSS & JavaScript). Thế mạnh của Qt là đồ họa và xử lý ảnh. OpenGL cũng được tích hợp vào trong Qt tạo nên một thư viện hoàn hảo về đồ họa máy tính. Đi kèm với Qt là Qt Creator, một môi trường phát triển tích hợp hỗ trợ cho phát triển các ứng dụng Qt. Qt
![Page 11: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/11.jpg)
được sử dụng trong các phần mềm KDE trên các hệ thống GNU/Linux. Plasma Workspaces
là một ví dụDownload Qt từ trang http://qtproject.org/downloads. Phiên bản hiện tại của Qt là Qt 5.0. Trên Windows, nên sử dụng bản Qt 5.0.1 for Windows 32bit (MinGW 4.7, 823 MB). Bản cài đặt này bao gồm thư viện Qt và môi trường phát triển tích hợp (IDE) Qt Creator.
2. Sử dụng Qt Creator
Giao diện chính của Qt Creator như hình bên dưới.
a. Tạo dự án mới (create Project)
Click nút Create Project…
![Page 12: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/12.jpg)
Chọn mẫu (template): Qt C++ Project, Qt Gui Application, kế đến click Choose…
![Page 13: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/13.jpg)
Nhập tên dự án (Name) và thư mục chứa dự án (Create in), sau đó click Next.
Chọn kiểu giao diện. Qt Creator cung cấp 3 kiểu ứng dụng giao diện đồ họa chính thừa kế từ các lớpcơ sở sau:
∙ QMainWindow: Kiểu giao diện này thường được sử dụng, giao diện gồm có Menu, Thanh công cụ(Toolbar), Cửa số trung tâm (Center Widget) và Thanh trạng thái (StatusBar)
∙ QDialog: Giao diện ứng dụng kiểu hộp hội thoại.∙ QWidget: (Dành cho người dùng chuyên nghiệp), người dùng có thể tùy biến giao diện theo ý thích,
nhưng phải lập trình khá nhiều.
Nhập tên lớp cửa số chính (Class name): mặc định Qt Creator đặt tên lớp chính là MainWindow nếulớp cơ sở là QMainWindow.
![Page 14: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/14.jpg)
Click Next, chọn bộ quản lý phiên bản (version control). Có thể bỏ qua bước này.
Click Finish để hoàn tất việc tạo dự án. Sau đó cấu hình dự án (Project setup).
![Page 15: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/15.jpg)
Click Finish là hoàn tất.
![Page 16: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/16.jpg)
Kết quả thực thi dự án: Ta được ứng dụng gồm khung Window, Thanh công cụ, cửa sổ trung tâm vàthanh trạng thái.
b. Tổ chức của dự án
Đóng giao diện, click icon Edit bên trái để xem tổ chức dự án.
![Page 17: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/17.jpg)
Dự án gồm các file sau:∙ HelloWorld.pro: file chính của dự án∙ mainwindow.ui: định nghĩa giao diện giao diện đồ họa (theo cấu trúc XML)∙ mainwindow.h: định nghĩa lớp MainWindow∙ main.cpp: chứa hàm main()∙ mainwindow.cpp: cài đặt các hàm có trong lớp MainWindow
File HelloWorld.pro
![Page 18: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/18.jpg)
File mainwindow.ui
Khi biên dịch Qt sẽ sinh ra lớp Ui::MainWindow được dùng trong lớp MainWindow.
File mainwindow.h
File mainwindow.cpp
![Page 19: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/19.jpg)
File main.cpp
c. Thiết kế giao diện và xử lý sự kiện
Trong phần này ta sẽ thiết kế một giao diện gồm một nút nhấn (PushButton) có nhãn: “Click me!”, có tên (name): btnClick, khi click chuột vào sẽ hiện hộp thông báo “Hello world!”Thiết kế giao diện: mở file mainwindow.ui ở chế độ Design, thêm một nút nhấn vào khung cửa sổ
![Page 20: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/20.jpg)
trung tâm. Kéo nút nhấn (Push Button) thả (drag and drop) vào trong cửa sổ trung tâm.
Click phải trên nút nhấn, chọn Change text… để thay đổi nhãn của nút nhấn.
![Page 21: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/21.jpg)
Đổi nhãn thành Click me!
Xử lý sự kiện: Qt cung cấp cơ chế lập trình hướng sự kiện thông qua: SIGNAL và SLOT.∙ SIGNAL: Sự kiện. Sự kiện có thể là sự kiện của hệ thống như click chuột, di chuyển chuột, bấm
phím, … Sự kiện cũng có thể do người lập trình tự định nghĩa và kích hoạt trong chương trình.∙ SLOT: Hàm xử lý sự kiện. Về bản chất SLOT cũng là một phương thức (method). Để khai báo một
phương thức là một slot ta thêm phát biểu public slots: hoặc private slots: trước phương thức tương ứng.SIGNAL và SLOT được gắn kết với nhau qua hàm connect.
Để gắn kết sự kiện do một thành phần có trong giao diện phát ra, click phải trên thành phần đó, chọn Go to slot…, trong ví dụ này là click phải trên nút nhấn, chọn Go to slot…
![Page 22: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/22.jpg)
Chọn tín hiệu/sự kiện clicked(). Sự kiện này xảy ra người dùng click chuột lên nút nhấn hoặc nhấn ENTER khi nút nhấn đang được kích hoạt.
Xem lại file mainwindow.h ta sẽ thấy Qt đã tự động thêm vào một slot tên on_pushButton_clicked(). Việc kết nối SIGNAL clicked() và SLOT on_pushButton_clicked() được thực hiện tự động khi ta gọi hàm ui>setupUi(this).
![Page 23: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/23.jpg)
Giờ ta quay lại file mainwindow.cpp để định nghĩa code xử lý cho SLOT on_pushButton_clicked().
Kết quả như hình bên dưới.
![Page 24: Xulyanh TP B1](https://reader033.vdocuments.pub/reader033/viewer/2022051114/55cf9c28550346d033a8d407/html5/thumbnails/24.jpg)