1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Tiểu luận) báo cáo tiểu luận môn nhập môn xử lý ảnh số essay introduction to digital image processing

44 17 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Introduction to Digital Image Processing
Tác giả Đoàn Phương Nam, Tống Đức Thành Nam
Người hướng dẫn Thầy Trịnh Hùng Cường
Trường học Trường Đại Học Tôn Đức Thắng
Chuyên ngành Nhập Môn Xử Lý Ảnh Số
Thể loại tiểu luận
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 44
Dung lượng 6,97 MB

Cấu trúc

  • CHƯƠNG 1 METHODOLOGY OF SOLVING TASKS (10)
    • 1.1 Tách ngôi sao (10)
    • 1.2 Chuyển ngôi sao thành màu xanh lá sáng (0)
    • 1.3 Chuyển tất cả ngôi sau thành màu xanh lá sáng (0)
    • 1.4 Chuyển ảnh sang thành ảnh xám và đường viền ngôi sao đổi màu trắng thành đen (16)
    • 1.5 Chuyển tất cả ngôi sao thành màu đen (0)
    • 1.6 Vẽ đường viền đỏ xung quanh hình ảnh đầu (18)
    • 1.7 Vẽ hình chữ nhật lên xung quanh các viền của ngôi sao có trong tấm hình (0)
    • 1.8 Thêm nhiễu Gaussian và độ lệch chuẩn vào hình ảnh đầu vào (0)
  • CHƯƠNG 2 TASK RESULTS (23)
    • 2.1 Result question a (23)
    • 2.2 Result question b (29)
    • 2.3 Result question c (35)
    • 2.4 Result question d (36)
    • 2.5 Result question e (37)
    • 2.6 Result question f (38)
    • 2.7 Result question g (39)
    • 2.8 Result question h (40)
  • TÀI LIỆU THAM KHẢO (0)

Nội dung

51.4 Chuyển ảnh sang thành ảnh xám và đường viền ngôi sao đổi màu trắng thành đen .... 91.7 Vẽ hình chữ nhật lên xung quanh các viền của ngôi sao có trong tấm hình .... 1: Ngôi sao vàng

METHODOLOGY OF SOLVING TASKS

Tách ngôi sao

Description: Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang không giang màu HSV hsv_img = cv.cvtColor( img , cv.COLOR_BGR2HSV)

Tạo mặt nạ của các kênh màu HSV

Màu vàng lower_yellow = np.array([20, 198, 118]) upper_yellow = np.array([40, 255, 255]) yellow_mask = cv.inRange(hsv_img lower_yellow upper_yellow , , )

Màu cam lower_orange = np.array([0, 198, 90]) upper_orange = np.array([68, 245, 240]) orange_mask = cv.inRange( hsv_img lower_orange upper_orange , , )

Màu hồng lower_pink = np.array([ 150, 50, 50 ]) upper_pink = np.array([ 180, 255 255 , ]) pink_mask = cv.inRange(hsv_img, lower_pink upper_pink , )

Màu Xanh dương lower_blue = np.array([ 100, 50, 50 ]) upper_blue = np.array([ 130, 255 255 , ]) blue_mask = cv.inRange(hsv_img, lower_blue upper_blue , )

Màu xanh lá lower_green = np.array([20 198, 118]) , green_mask = cv.inRange(hsv_img lower_green upper_green , , )

To detect purple hues in an image, define the lower and upper bounds using NumPy arrays: `lower_purple = np.array([120, 50, 50])` and `upper_purple = np.array([150, 255, 255])` Utilize OpenCV's `cv.inRange()` function to create a mask that highlights areas of the image corresponding to the specified purple color range Apply this mask to the image to visualize the stars that match the purple color.

# ngôi sau màu vàng yellow_star = cv.bitwise_and(img, img, mask=yellow_mask)

# ngôi sau màu Cam orange_star = cv.bitwise_and(img, img, mask=orange_mask)

# ngôi sau màu hồng pink_star = cv.bitwise_and(img img , , mask= pink_mask )

# ngôi sau màu xanh blue_star = cv.bitwise_and(img img , , mask= blue_mask )

# ngôi sau màu xanh lá green_star = cv.bitwise_and(img, img mask=green_mask) ,

# ngôi sau màu tím purple_star = cv.bitwise_and(img, img, m ask= purple_mask )

Ghi lại kết quả nhận được

The code snippet demonstrates how to save images using OpenCV, specifically by writing multiple star images in different colors to files The images saved include a yellow star as "image_01_01.png," an orange star as "image_01_02.png," a pink star as "image_01_03.png," a blue star as "image_01_04.png," a green star also as "image_01_04.png," and a purple star as "image_01_05.png."

The code snippet utilizes the OpenCV library to display images of stars in various colors It showcases six different colored stars: yellow, orange, pink, blue, green, and purple, using the `cv.imshow` function for each color After displaying the images, the program waits for a key press with `cv.waitKey(0)` before closing all windows with `cv.destroyAllWindows()`.

1.2 Chuy n ngôi sao thành màu xanh lá sáng ể

Description: Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổ ảnh sang i không gian màu HSV hsv_img = cv.cvtColor(img, cv.COLOR_BGR2HSV)

Tạo mặt nạ các kênh màu HSV (màu tương ứng) lower_yellow = ( , 20 100 100 , ) upper_yellow = ( , 30 255 255 , ) mask_yellow = cv.inRange(hsv_img lower_yellow upper_yellow , , )

Loại bỏ nhiễu bằng phép toán đóng

# Loại bỏ nhiễu phép toán đóng kernel = cv.getStructuringElement( cv MORPH_ELLIPSE, (5 5 , )) closed_mask_yellow = cv.morphologyEx(mask_yellow , cv MORPH_CLOSE , kernel)

Tìm các contours trong mặt nạ đóng

# Tìm các contours trong mặt nạ đã đóng contours, hierarchy = cv.findContours( closed_mask_yellow , cv RETR_EXTERNAL , cv CHAIN_APPROX_SIMPLE )

Tìm contour có diện tích lớn nhất và vẽ một đường bao quanh contour đó

# Tìm contour có diện tích lớn nhất và vẽ một đường bao quanh contour đó max_contour = max(contours, key= cv contourArea) cv.drawContours(img_Yellow max_contour , [ ], 0 0 255 0 , ( , , ), - ) 5

Thay đổi ngôi sao (màu tương ứng) thành màu xanh lá sáng

# Thay đổi ngôi sao màu vàng thành ngôi sao màu xanh lá sáng for point in max_contour: x, y = point[0 ] img_Yellow y [ , x] = [0 , 255 , 0 ]

Ghi lại kết quả nhận được

# Lưu ảnh đầu ra cv.imwrite('image_02_01.png', img_Yellow) cv imshow ( 'Output 1.jpg', img_Yellow) cv.waitKey(0) cv.destroyAllWindows()

Làm tương tự với màu cam, màu hồng, màu xanh dương, màu xanh lá, màu tím

1.3 Chuy n tể ất cả ngôi sau thành màu xanh lá sáng

Description: Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang không gian màu HSV hsv_img = cv.cvtColor(img, cv.COLOR_BGR2HSV)

Tạo mặt nạ các kênh màu HSV (màu tương ứng) lower_yellow = ( , 20 100 100 , ) upper_yellow = ( , 30 255 255 , ) mask_yellow = cv.inRange(hsv_img lower_yellow upper_y low , , el )

Loại bỏ nhiễu bằng phép toán đóng

# Loại bỏ nhiễu phép toán đóng kernel = cv.getStructuringElement( cv MORPH_ELLIPSE, (5 5 , )) closed_mask_yellow = cv.morphologyEx(mask_yellow , cv MORPH_CLOSE , kernel) Đổi màu tương ứng:

Tìm các contours trong mặt nạ đóng

# Tìm các contours trong mặt nạ đã đóng contours, hierarchy = cv.findContours( closed_mask_yellow , cv RETR_EXTERNAL , cv CHAIN_APPROX_SIMPLE )

Tìm contour có diện tích lớn nhất và vẽ một đường bao quanh contour đó

# Tìm contour có diện tích lớn nhất và vẽ một đường bao quanh contour đó max_contour = max(contours, key= cv contourArea) cv.drawContours(img, [ max_contour ], 0, (0, 255 0), -5) ,

Thay đổi ngôi sao (màu tương ứng) thành màu xanh lá sáng

# Thay đổi ngôi sao màu vàng thành ngôi sao màu xanh lá sáng for point in max_contour: x, y = point[0 ] img[y, x] = [0, 255 0 , ]

Làm tương tự với các màu cam, màu hồng, màu xanh dương, màu xanh lá, màu tím Ghi lại kết quả nhận được

# Lưu ảnh đầu ra cv.imwrite('image_03_01.png', img) cv imshow ( 'Output 1', img) cv.waitKey(0) cv.destroyAllWindows()

1.4 Chuyển ảnh sang thành ảnh xám và đường viền ngôi sao đổi màu trắng thành đen

Description: Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Tạo ngưỡng và chuyển đổi sang ảnh nhị phân retval, thresh = cv.threshold(gray_img, 200 255 , , cv THRESH_BINARY )

Loại bỏ nhiễu bằng phương pháp làm trơn kernel = cv.getStructuringElement( cv MORPH_RECT, ( , 5 5)) thresh = cv.morphologyEx( thresh, cv MORPH_CLOSE kernel , )

Chuyển viền màu trắng thành màu đen contours, hierarchy = cv.findContours( thresh , cv RETR_EXTERNAL , cv CHAIN_APPROX_SIMPLE ) cv.drawContours(gray_img contours , , -1, (0, , ), 0 0 10)

Ghi lại kết quả nhận được cv.imwrite("image_04_01.jpg", gray_img) cv imshow ( "Output 1.jpg", gray_img) cv.waitKey(0) cv.destroyAllWindows()

1.5 Chuy n tể ất cả ngôi sao thành màu đen

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng uật toán GaussianBlur()th

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Lấy ngưỡng để có viền của ngôi sao

# Thres1 - Lấy ngưỡng để có được các viền của ngôi sao ret1, thresh_img_1 = cv.threshold( blur, 195 255 , , cv THRESH_BINARY_INV)

Lấy ngưỡng để có được hình ngôi sao

# Thres2 - Lấy ngưỡng để có được bên trong ngôi sao ret1, thresh_img_2 = cv.threshold( blur, 134 255 , , cv THRESH_BINARY)

Kết hợp 2 ngưỡng để có được hình ngôi sao và viền ngôi sao

# Kết hợp 2 thres để có được ngoi sao có cả viền và bên trong result = cv.bitwise_and(thresh_img_1, thresh_img_2)

Ghi kết quả nhận được cv.imwrite("image_05_01.png", result) cv imshow ( "Output 1", result) cv.waitKey(0) cv.destroyAllWindows()

1.6 V ẽ đường viền đỏ xung quanh hình ảnh đầu

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, mode=cv.RETR_TREE method , =cv CHAIN_APPROX_NONE )

Vẽ các contours với màu đỏ

# Vẽ các contours với màu đỏ cv.drawContours(image=image , contours= contours , contourIdx=- 1, color = (0, , 0 255 ), thickness=2)

Ghi kết quả nhận được cv.imwrite("image_06_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.7 V hình chẽ ữ nhật lên xung quanh các vi n cề ủa ngôi sao có trong tấm hình

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, m ode=cv RETR_TREE method , =cv CHAIN_APPROX_NONE )

Với mỗi contours thì vẽ hình chữ nhật lên viền của các ngôi sao

To draw a rectangle around each contour in an image, iterate through the contours using a loop For each contour, calculate the bounding rectangle with `cv.boundingRect(c)` to obtain the dimensions Extract the coordinates and size from the rectangle, and then use `cv.rectangle` to draw the rectangle on the image Set the rectangle's color to green (0, 255, 0) and specify a thickness of 2 pixels for clear visibility.

Ghi kết quả nhận được cv.imwrite("image_07_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.8 Thêm nhi u Gaussian ễ và độ lệch chuẩn vào hình ảnh đầu vào Description:

Gaussian với giá trị trung bình = 0; Độ lệch chuẩn với giá trị = 150; Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Tạo nhiễu trùng với kích thước ảnh

# Tạo nhiễu trùng với kích thước ảnh gausian_noise = np zeros ( image shape, np uint8 )

Tạo nhiễu Gaussian ngẫu nhiên với Gaussian với giá trị trung bình = 0 và độ lệch chuẩn với giá trị = 150

# Tạo nhiễu Gaussian ngẫu nhiên cv.randn ( dst=gausian_noise, mean=0 , stddev0

# Thêm nhiễu vào ảnh image = cv add ( image , np array ( 0.2* gausian_noise dtype , =np.uint8))

# Thêm MSSV vào ảnh image = cv.putText(image, "52000895 52000896", (10, 30), cv.FONT_HERSHEY_SIMPLEX, , ( 1 128 , 0, 128 ), 2, cv.LINE_AA)

Ghi kết quả nhận được cv.imwrite("image_08_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

Chuyển ảnh sang thành ảnh xám và đường viền ngôi sao đổi màu trắng thành đen

Description: Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Tạo ngưỡng và chuyển đổi sang ảnh nhị phân retval, thresh = cv.threshold(gray_img, 200 255 , , cv THRESH_BINARY )

Loại bỏ nhiễu bằng phương pháp làm trơn kernel = cv.getStructuringElement( cv MORPH_RECT, ( , 5 5)) thresh = cv.morphologyEx( thresh, cv MORPH_CLOSE kernel , )

Chuyển viền màu trắng thành màu đen contours, hierarchy = cv.findContours( thresh , cv RETR_EXTERNAL , cv CHAIN_APPROX_SIMPLE ) cv.drawContours(gray_img contours , , -1, (0, , ), 0 0 10)

Ghi lại kết quả nhận được cv.imwrite("image_04_01.jpg", gray_img) cv imshow ( "Output 1.jpg", gray_img) cv.waitKey(0) cv.destroyAllWindows()

1.5 Chuy n tể ất cả ngôi sao thành màu đen

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng uật toán GaussianBlur()th

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Lấy ngưỡng để có viền của ngôi sao

# Thres1 - Lấy ngưỡng để có được các viền của ngôi sao ret1, thresh_img_1 = cv.threshold( blur, 195 255 , , cv THRESH_BINARY_INV)

Lấy ngưỡng để có được hình ngôi sao

# Thres2 - Lấy ngưỡng để có được bên trong ngôi sao ret1, thresh_img_2 = cv.threshold( blur, 134 255 , , cv THRESH_BINARY)

Kết hợp 2 ngưỡng để có được hình ngôi sao và viền ngôi sao

# Kết hợp 2 thres để có được ngoi sao có cả viền và bên trong result = cv.bitwise_and(thresh_img_1, thresh_img_2)

Ghi kết quả nhận được cv.imwrite("image_05_01.png", result) cv imshow ( "Output 1", result) cv.waitKey(0) cv.destroyAllWindows()

1.6 V ẽ đường viền đỏ xung quanh hình ảnh đầu

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, mode=cv.RETR_TREE method , =cv CHAIN_APPROX_NONE )

Vẽ các contours với màu đỏ

# Vẽ các contours với màu đỏ cv.drawContours(image=image , contours= contours , contourIdx=- 1, color = (0, , 0 255 ), thickness=2)

Ghi kết quả nhận được cv.imwrite("image_06_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.7 V hình chẽ ữ nhật lên xung quanh các vi n cề ủa ngôi sao có trong tấm hình

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, m ode=cv RETR_TREE method , =cv CHAIN_APPROX_NONE )

Với mỗi contours thì vẽ hình chữ nhật lên viền của các ngôi sao

To draw rectangles around contours in an image, iterate through each contour using a loop For each contour, calculate the bounding rectangle with `cv.boundingRect(c)` to obtain its dimensions Extract the coordinates and size of the rectangle, and then use `cv.rectangle()` to draw the rectangle on the image Set the rectangle's color to green (0, 255, 0) and specify a thickness of 2 pixels for clear visibility.

Ghi kết quả nhận được cv.imwrite("image_07_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.8 Thêm nhi u Gaussian ễ và độ lệch chuẩn vào hình ảnh đầu vào Description:

Gaussian với giá trị trung bình = 0; Độ lệch chuẩn với giá trị = 150; Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Tạo nhiễu trùng với kích thước ảnh

# Tạo nhiễu trùng với kích thước ảnh gausian_noise = np zeros ( image shape, np uint8 )

Tạo nhiễu Gaussian ngẫu nhiên với Gaussian với giá trị trung bình = 0 và độ lệch chuẩn với giá trị = 150

# Tạo nhiễu Gaussian ngẫu nhiên cv.randn ( dst=gausian_noise, mean=0 , stddev0

# Thêm nhiễu vào ảnh image = cv add ( image , np array ( 0.2* gausian_noise dtype , =np.uint8))

# Thêm MSSV vào ảnh image = cv.putText(image, "52000895 52000896", (10, 30), cv.FONT_HERSHEY_SIMPLEX, , ( 1 128 , 0, 128 ), 2, cv.LINE_AA)

Ghi kết quả nhận được cv.imwrite("image_08_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

Vẽ đường viền đỏ xung quanh hình ảnh đầu

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, mode=cv.RETR_TREE method , =cv CHAIN_APPROX_NONE )

Vẽ các contours với màu đỏ

# Vẽ các contours với màu đỏ cv.drawContours(image=image , contours= contours , contourIdx=- 1, color = (0, , 0 255 ), thickness=2)

Ghi kết quả nhận được cv.imwrite("image_06_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.7 V hình chẽ ữ nhật lên xung quanh các vi n cề ủa ngôi sao có trong tấm hình

Description: Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Chuyển đổi ảnh sang ảnh xám

# Chuyển đổi sang không gian màu xám gray_img = cv.cvtColor( img, cv COLOR_BGR2GRAY)

Khử nhiễu bằng thuật toán GaussianBlur()

# Khử nhiễu bằng GaussianBlur() blur = cv.GaussianBlur(gray, (5, 5), 0)

Tạo ngưỡng để có được viền của ngôi sao

# Tạo ngưỡng để có được các viền của ngôi sao ret, thresh = cv.threshold( blur , 220 255 , , cv THRESH_BINARY_INV )

Tìm các contours dựa trên viền của các ngôi sao

# Tìm các contours dựa trên viền của các ngôi sao contours, hierarchy = cv.findContours( image=thresh, m ode=cv RETR_TREE method , =cv CHAIN_APPROX_NONE )

Với mỗi contours thì vẽ hình chữ nhật lên viền của các ngôi sao

To draw rectangles around contours in an image, iterate through each contour using a loop For each contour, use the `cv.boundingRect(c)` function to find the surrounding rectangle Extract the rectangle's dimensions: x, y, width (w), and height (h) Then, utilize the `cv.rectangle()` function to draw the rectangle on the image, specifying the top-left corner as (x, y) and the bottom-right corner as (x + w, y + h) Set the rectangle's color to green (0, 255, 0) and adjust the thickness to 2 pixels for clear visibility.

Ghi kết quả nhận được cv.imwrite("image_07_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

1.8 Thêm nhi u Gaussian ễ và độ lệch chuẩn vào hình ảnh đầu vào Description:

Gaussian với giá trị trung bình = 0; Độ lệch chuẩn với giá trị = 150; Đọc ảnh từ đầu vào

# Đọc ảnh từ đầu vào img = cv.imread('input1.jpg')

Tạo nhiễu trùng với kích thước ảnh

# Tạo nhiễu trùng với kích thước ảnh gausian_noise = np zeros ( image shape, np uint8 )

Tạo nhiễu Gaussian ngẫu nhiên với Gaussian với giá trị trung bình = 0 và độ lệch chuẩn với giá trị = 150

# Tạo nhiễu Gaussian ngẫu nhiên cv.randn ( dst=gausian_noise, mean=0 , stddev0

# Thêm nhiễu vào ảnh image = cv add ( image , np array ( 0.2* gausian_noise dtype , =np.uint8))

# Thêm MSSV vào ảnh image = cv.putText(image, "52000895 52000896", (10, 30), cv.FONT_HERSHEY_SIMPLEX, , ( 1 128 , 0, 128 ), 2, cv.LINE_AA)

Ghi kết quả nhận được cv.imwrite("image_08_01.png", image) cv imshow ( "Output 1", image) cv.waitKey(0) cv.destroyAllWindows()

Thêm nhiễu Gaussian và độ lệch chuẩn vào hình ảnh đầu vào

Kết quả ngôi sao vàng

Hình 2.1 1: Ngôi sao màu vàng

TASK RESULTS

Result question a

Kết quả ngôi sao vàng

Hình 2.1 1: Ngôi sao màu vàng

Kết quả ngôi sao cam

Hình 2.1 2: Ngôi sao màu cam

Kết quả ngôi sao hồng

Hình 2.1 3: Ngôi sao màu hồng

Kết quả ngôi sao xanh dương

Hình 2.1 4: Ngôi sao màu xanh dương

Kết quả ngôi sao xanh lá

Hình 2.1 5: Ngôi sao màu xanh lá

Kết quả ngôi sao tím

Hình 2.1 6: Ngôi sao màu tím

Result question b

Ngôi sao màu vàng chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 1: Ngôi sao vàng chuyển thành ngôi sao xanh lá sáng

Ngôi sao màu cam chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 2: Ngôi sao cam chuyển thành ngôi sao xanh lá sáng

Ngôi sao màu hồng chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 3: Ngôi sao hồng chuyển thành ngôi sao xanh lá sáng

Ngôi sao màu xanh dương chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 4: Ngôi sao xanh dương chuyển thành ngôi sao xanh lá sáng

Ngôi sao màu xanh lá chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 5: Ngôi sao xanh lá chuyển thành ngôi sao xanh lá sáng

Ngôi sao màu tím chuyển thành ngôi sao màu xanh lá sáng

Hình 2.2 6: Ngôi sao tím chuyển thành ngôi sao xanh lá sáng

Result question c

Tất cả ngôi sao chuyển thành ngôi sao màu xanh lá sáng

Hình 2.3 1 Các : ngôi sao chuyển thành các ngôi sao xanh lá sáng

Result question d

Hình ảnh với đường viền của các ngôi sao màu đen

Hình 2.4 1: Các ngôi sao có đường viền màu đen

Result question e

Hình ảnh với tất cả ngôi sao đều màu đen

Hình 2.5 1: Các ngôi sao chuyển thành màu đen

Result question f

Hình ảnh với các vật thể được bo bởi đường viền

Hình 2.6 1: Các đối tượng trong ảnh được ền mvi àu đỏ

Result question g

Hình ảnh với các hình chữ nhật xung quanh các viền của ngôi sao

Hình 2.7 1: Các ngôi sao được viền hình chữ nhật

Result question h

Hình ảnh với thuật toán Gaussian noise và thêm mã số sinh viên

Hình 2.8 1: Thuật toán Gaussian noise và thêm mã số sinh viên

CAU HOI TRAC Nghiem TCMT Chuong 1 6

On Tap Cuoi ky Mon Phuong phap lap trinh

Chương 1: Các hệ thống số đếm

26 trắc nghiệm Tổ chức máy tính

Final report Operating System Concepts

Practice materials of Digital Logic Design

Tố chức máy tính None

Ngày đăng: 26/12/2023, 04:56

TỪ KHÓA LIÊN QUAN

w