thac mac mon xu ly anh

61
Thac mac mon xu ly anh 2012/12/11 Nam Hoang Thưa thầy, trong thuật toán đẳng điệu các giá trị m(f,k) và m(b,k) là số không nguyên vậy ta phải làm tròn m(f,k) và m(b,k) hay làm tròn θk = ( m(f,k)+m(b,k) ) / 2 ạ T a có thể làm tròn θ(k+1) đến giá trị nguyên gần nhất Thầy Hưng Em chào thầy, thầy cho em hỏi chút về Canny ạ. Trong ví dụ ở file word bài tập 4 của thầy về Canny, bước 4 là bước giữ lại hoặc loại bỏ điểm khi xét với 2 điểm lân cận theo ma trận hướng. Với điểm 128 đầu tiên tương ứng có giá trị ở ma trận hướng là 2. Như vậy khi xét thì ta xét 2 điểm trên dưới (là điểm 0 và 181.02) hay là xét 2 điểm lân cận theo chiều xuống dưới (181.01 và 128) ạ? Tuy nhiên nếu xét cả 2 trường hợp này thì nó đều không lớn hơn 2 điểm lân cận. Như vậy phải loại bỏ điểm này, tuy nhiên trong ma trận cuối cùng của thầy thì điểm đó là 255. Thầy giải thích bước này giúp em với ạ. Em cám ơn thầy. Bạn xem lại đi, thầy có cập nhật hướng dẫn mới nhất đấy. Trong cái mới nhất thầy đã sửa lỗi này rồi Thầy Hưng Trong slide thuật toán đối xứng nền có đoạn Giả sử chúng ta chọn p% là 95% thì chúng ta sẽ tính sao cho d iện tích từ a đến max là bằng 5% của điện tích từ maxp đến max ." maxp vs max là cái gì ak. Max là mức xám lớn nhất trong ảnh maxp là mức xám có h(maxp) là lớn nhất trong histogram Thầy Hưng Em chào thầy, thầy cho em hỏi 1 chút về hướng trong canny ! Em tính ra ma trận gy: 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 128 128 128 0 0 0 0 0 0 0 0 0 0 0 -128 -128 -128 0 0 0 0 -128 -128 -128 0 0 0 0 0 0 0 0 0 Ma trận gx: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 -128 -128 0 0 128 128 0 -128 -128 0 0 128 128 0 -128 -128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Upload: mai-mit

Post on 27-Oct-2015

436 views

Category:

Documents


67 download

DESCRIPTION

Thac mac mon xu ly anh - Thay Pham Viet Hung

TRANSCRIPT

Page 1: Thac Mac Mon Xu Ly Anh

Thac mac mon xu ly anh

2012/12/11 Nam Hoang Thưa thầy, trong thuật toán đẳng điệu các giá trị m(f,k) và m(b,k) là số không nguyên vậy ta phải làm tròn m(f,k) và m(b,k) hay làm tròn θk =  ( m(f,k)+m(b,k) ) / 2 ạTa có thể làm tròn θ(k+1) đến giá trị nguyên gần nhấtThầy HưngEm chào thầy, thầy cho em hỏi chút về Canny ạ.

Trong ví dụ ở file word bài tập 4 của thầy về Canny, bước 4 là bước giữ lại hoặc loại bỏ điểm khi xét với 2 điểm lân cận theo ma trận hướng.

Với điểm 128 đầu tiên tương ứng có giá trị ở ma trận hướng là 2. Như vậy khi xét thì ta xét 2 điểm trên dưới (là điểm 0 và 181.02) hay là xét 2 điểm lân cận theo chiều xuống dưới (181.01 và 128) ạ? 

Tuy nhiên nếu xét cả 2 trường hợp này thì nó đều không lớn hơn 2 điểm lân cận. Như vậy phải loại bỏ điểm này, tuy nhiên trong ma trận cuối cùng của thầy thì điểm đó là 255. Thầy giải thích bước này giúp em với ạ.

Em cám ơn thầy.Bạn xem lại đi, thầy có cập nhật hướng dẫn mới nhất đấy.Trong cái mới nhất thầy đã sửa lỗi này rồiThầy HưngTrong slide thuật toán đối xứng nền có đoạn Giả sử chúng ta chọn p% là 95% thì chúng ta sẽ tính sao cho diện tích từ a đến max là bằng 5% của điện tích từ maxp đến max."maxp vs max là cái gì ak.Max là mức xám lớn nhất trong ảnhmaxp là mức xám có h(maxp) là lớn nhất trong histogramThầy HưngEm chào thầy, thầy cho em hỏi 1 chút về hướng trong canny !Em tính ra ma trận gy:     0     0     0      0      0       0     0     0     0   128   128   128     0     0     0     0   128   128   128     0     0     0     0     0      0      0       0     0     0     0  -128  -128  -128     0     0     0     0  -128  -128  -128     0     0     0     0     0      0      0       0     0Ma trận gx:     0     0      0     0     0      0     0     0     0      0     0     0      0     0     0   128   128   0  -128  -128   0     0   128   128   0  -128  -128   0     0   128   128   0  -128  -128   0     0     0      0     0     0      0     0     0     0      0     0     0      0     0Tại (3,3) có hướng là arctan(128/128) = 45 độ. Trong khi hướng của nó lại là 1 (- 45 độ). Các điểm có hướng chéo khác đều ngược như vậy, còn hướng dọc và ngang vẫn đúng.

Vậy khi áp dụng thuật toán vào bài tập khi thi, bọn em phải làm thế nào cho đúng vậy thầy?

Em cảm ơn thầy !!!Nếu bạn theo dõi email giải thích bài tập đợt trước của thầy thì sẽ thấy là thầy giải đáp các bạn câu này rồi..arctan có một vấn đề khi tính góc đó là chỉ tính được góc trong khoảng 180 độ thôiNếu muốn tìm góc trong khoảng 360 độ các bạn phải xét bằng một điều kiên

Cách đơn giản nhất khi làm bài tập là vẽ các vector theo đúng hướng rồi cộng vector lại

Page 2: Thac Mac Mon Xu Ly Anh

Nếu bạn có một hệ tọa độ x theo chiều từ trái sang phải và y theo chiều từ trên xuống dưới thì giá trị 128 trong ma trận gy sẽ là một vector giá trị 128 và hướng xuống dưới, giá trị -128 trong gy sẽ là một vector giá trị 128 và hướng lên trên. Làm tương tự như vậy với x bạn sẽ có các vector thành phần tại các điểm.,

Tại đây bạn có thể xác định vector tổng hợp rồi cộng vào tìm độ lớn và hướng thôi

Thầy HưngThưa thầy cho em hỏi trong thuật toán K láng giềng nếu số phần tử của 2 tập bằng nhau thì ta chọn tập nào?Em cảm ơn thầy :)Trong trường hợp này thì chọn tập nào cũng được, thông thường thì nếu chúng ta cho 1/d (d là khoảng cách từ đối tượng đang xét đến đối tượng bỏ phiểu) là phiếu bầu thay vì mỗi đối được 1 phiếu bầu thì sẽ khó có trường hợp này xảy ra.Tuy nhiên thì vẫn có khả năng, nên thông thường người ta chọn K là số lẻ :) ( tất nhiên với nhiều loại hơn 2 thì việc chọn số lẻ vẫn có thể bị bằng nhau)

Thầy HưngThưa thầy, công thức biến đổi Cosin có một số chỗ em chưa hiểu:

1. Tổng xichma của n1 và n2 chạy từ 0 thì phải đến N-1, trong slide ghi là đến N2. Tính giá trị e thế nào khi k1 hoặc k2 =1. Trong tài liệu XLA bên đào tạo từ xa của thầy Hoan em lại thấy công thức tính e khác: 

e=1/căn 2 khi k=0e= 0 khi 0<k<N 

Mong thầy giải đáp 1) Đúng, phải chạy tử 0 đến N-1 sorry các bạn

2) Còn về công thức kìa thì thầy nghĩ là tài liệu của thầy Hoan có vấn đề

Vì nếu cho e=0 với tất cả các giá trị k khác thì sau khi tính cosin chỉ có X(0,0) là khác 0 còn lại là bằng 0 hết à?

Các thành phần tần số cao bị mất hết, đâu có đúng ;)

Bạn nên nghiên cứu tài liệu nước ngoài trước đã nhé

Thầy HưngThưa thầy!Cái cp trong thuật toán K-mean chứa cái gì a?Các điểm thuộc vùng hay là các tâm của vùng thay đổi sau mỗi lần thêm thành viên.

cp là danh sách tọa độ các tâm sau khi phân vùng bằng k-meanDanh sách tâm này là danh sách cuối cùng, khi thuật toán đã dừng hẳn

class là phân loại của sample dựa vào các tâm cp này (tương ứng với số thứ tự)

Thầy HưngEm chào thầy, thầy cho em hỏi về bài tập phần đẳng điệu, đối xứng nền, tam giác ạ : Tất cả những loạt bài này đều bắt đầu lấy giá trị vị trí của các phần tử trong histogram a là 0 hay là 1 ạ?

Ví dụ ở bài tập nhỏ của thầy 

a=[12  34  45  45  46  78  201  78  60]

thì số 12 có vị trí là 0 hay 1 ạ? Ở kết quả của thầy tính ra (phần đẳng điệu) thì t=5.Mức xám bắt đầu từ 0Vậy nên luôn bắt đầu từ 0

Page 3: Thac Mac Mon Xu Ly Anh

Thầy HưngEm thưa thầy , trong thuật toán đẳng điệu ,theo công thức ta có : m(f,0) được tính theo gmin=0, gmax = θ(0-1) = θ(-1)nếu thế thì θ(-1) sẽ có giá trị bao nhiêu ạ!em đang bị vướng chỗ này , mong thầy giúp e ạ!

em cảm ơn thầy !Có nhiều cách để khởi tạo θ(0), 

có thể là giá trị ngẫu nhiêngiá trị cao nhấtthấp nhấttrung bình

kết quả của thuật toán đếu sẽ giông nhauCó điều nếu θ(0) càng gần vị trí tối ưu thì bạn càng phải làm ít vòng lặp, nếu không thì sẽ bị lặp nhiều lần mới đến được đích

Thầy Hưng

Thưa Thầy, thuật toán  nén LZW  có phải là  nén không mất thông  tin không ạ? Trong slide có ví dụ thì k mất thông tin, nhưng trong th khác em làm thì lại mât thông tin ạ

KHông mất thông tinChỉ đơn giản là mã hóa thôi mà, mất thông tin kiểu gì?thưa thầy, em muốn hỏi cách làm bài tập về phép cuộn và mẫugiả sử cho ảnh I1 2 3 4 5 62 1 2 3 4 53 2 1 2 3 44 3 2 1 2 35 4 3 2 1 2và T = 1 0 1          0 4 0          2 -1 1để cuộn ảnh I theo T thì làm như thế nào ạ.

Cái này bạn đọc slide điSao lại hỏi thứ cơ bản thế này...Thế bạn không đi học hả?

Trước tiên bạn phải xác định xem nhân chập theo công thức nào (có xoay 180 độ không)Ma trận nhân chập có tâm ở đâu.

Giả sử ma trận nhân chập bạn chọn tâm là ở giữa, không xoay 180 độ và bạn coi các vị trí không vừa ma trận nhân chập là 0 thì ma trận của bạn sẽ được tính lần lượt như sau

0 0 0 0 0 00 x y z  t 00 *  * *  * 00 *  * *  * 00 0 0 0 0 0

x = 1*1+2*0+3*1+2*0+1*4+2*0+3*2+2*-1+1*1 = 13y = 2*1+3*0+4*1+1*0+2*4+3*0+2*2+1*-1+2*1 = 19

tương tự với z, t và các vị trí *

Page 4: Thac Mac Mon Xu Ly Anh

Thầy HưngThưa thầy cho em hỏi trong thuật toán K láng giềng nếu số phần tử của 2 tập bằng nhau thì ta chọn tập nào?Em cảm ơn thầy :)Trong trường hợp này thì chọn tập nào cũng được, thông thường thì nếu chúng ta cho 1/d (d là khoảng cách từ đối tượng đang xét đến đối tượng bỏ phiểu) là phiếu bầu thay vì mỗi đối được 1 phiếu bầu thì sẽ khó có trường hợp này xảy ra.Tuy nhiên thì vẫn có khả năng, nên thông thường người ta chọn K là số lẻ :) ( tất nhiên với nhiều loại hơn 2 thì việc chọn số lẻ vẫn có thể bị bằng nhau)

Thầy Hưng

Thầy cho em hỏi là ma trận Hx và Hy trong kỹ thuật Canny (ví dụ bài tập 4 ) có phải xoay 180 độ không ạ?

Nếu nhân chập của bạn có xoay thì bạn phải xoay, nêu không thì thôi

Nếu nhân chập không xoay thì dùng như trong slideTrong bài tập vì nhân chập của thầy là có xoay 180 độ nên khi dùng gx và gy đầu vào thì thầy phải xoay để cho khớp

Thầy HưngThầy cho em hỏi về LZW với ạ,       giả sử chuỗi cần mã hóa là ABABA

   w        k          đầu ra           mã         chuỗi----------------------------------------------- Null      A   A        B            A              258          AB   B        A            B              259          BA   A        B  AB      A          258             260          ???  ( chẳng lẽ là ABA ???)

-----------------------------------------------thầy có thể giải thích chỗ ??? giúp em với ạ. cám ơn thầy !Đúng rồi ABAÝ tưởng là nếu chuỗi đã tồn tại thì ta tạo ra một chuỗi dài hơn và thêm một chữ cái vào sau nó để nếu gặp lại thì ta đỡ phải viết code dài mà dùng chính code đã lặpThầy HưngThua thay. Trong bai nhan chap, loc trung vi, trung binh..., neu matran anh I co kich thuoc 7x7 nhu vi du cua thay do'. Nhu the tinh ratlau, 49 lan tinh'. Nhu vay, e co the lam la: tinh hang dau tien, 6hang sau noi "tuong tu ta co" duoc khong a?

KoBạn tính hết ;)Thầy HưngPS: yên tâm thầy không cho số "quái đản" đâu mà loThưa thầy,khi đặt B = 0  1                 (1) 1vào ma trận ảnh I , trên ma trận ảnh I = 1  1                                                            1  1rõ là B không nằm trọn trong I mà sao thầy lại giữ điểm này lại ạ ???Có thể các bạn không hiểu ý nghĩa của "nằm trọn"

Bạn phải tưởng tượng là ma trận 

Page 5: Thac Mac Mon Xu Ly Anh

0 11 1 

là nhằm thể hiện vật thể 

   11 1

các giá trị 0 ở đây chỉ nhằm điềm và chỗ trống thôi.Nghĩa là b là

0 11 1 

hay B la0 0 0 00 0 1 00 1 1 00 0 0 0

đều thể hiện 1 vật thể hết

Nghĩa là B là

0 11 1 

thể hiện vật thể 

   11 1 

nghĩa là có thể nằm trọn trong vật thể 

1 11 1

còn không thể nằm trọn trong vật thể

11 1

hay thể hiện bằng ma trận

1 01 1

Nếu nói chính xác thì nằm trọn là vật thể do B thể hiện nằm trọn trong vật thể do I thể hiện

Thầy Hưngvâng em cảm ơn thầy ạ. Nhưng thầy cho em hỏi làm sao để có những vị trí có giá trị 1 ở ma trận kết quả a (nếu là ma trận B như thầy viết đấy ạ, ma trận B có 1 vị trí có giá trị 0).1 lần nữa em xin cảm ơn thầy ạ!

Đúng rồi, nếu đặt ma trận B lên ma trận I tại tất cả các vị trí ( tâm B trùng với vị trí đang xét)Nếu toàn bộ B nằm trọn trong I (nghĩa là nếu trên ma trận B là 1 thì trên I cũng là 1, trên B là 0 thì không quan tâm trên I là 1 hay là 0)Thì vị trí đang xét có giá trị 1, nếu không thì vị trí đang xét có giá trị 0

Page 6: Thac Mac Mon Xu Ly Anh

Bạn thử đặt B vào vị trí khác những vị trí bằng 1 của thầy xem có chố nào vừa B không (đặt lên I nhé) 

Thầy Hưng*****Phép co ảnh là phép mà một giá trị được giữ lại khi B nằm trọn trong IVới ví dụ của bạn thì khi co I với B ta sẽ có kết quả sau:

Với I là 

1 0 0 0 0 00 1 1 1 0 10 1 1 0 0 00 1 1 0 0 00 1 1 0 0 01 0 1 1 0 1

Và B là (với (1) là tâm của B)

 0  1(1) 1

Kết quả phép co I với B

0 0 0 0 0 00 0 0 0 0 00 1 0 0 0 00 1 0 0 0 00 1 0 0 0 00 0 0 0 0 0

Các bạn thấy là chỉ những vị trí có giá trị 1 thì B mới nằm trọn trong I đượcthưa thầy, thầy cho em hỏi trong bài tập khi phải thực hiện nhân chập thì có phải xoay ma trận nhân chập 180 độ k ạ!em cảm ơn thầy ạ!

Việc xoay hay không thì hoặc là bài tập sẽ nói rõ, hai là nếu không thì bạn phải tự nêu ra là có xoay hay khôngThầy HưngThưa thầy cho em hỏi.Theo slide, Đẳng điệu tìm ngưỡng thì làm theo các bước.1. Đặt ngưỡng t0 là điểm ở giữa thang tần suất (có thể mặc định là 170?).2. t1 =(Mf,0+Mb,0)/2.3. Theo công thức Mf,k với Gmin=0-> tk-1.. Vậy Mf,0 tính dựa trên t0-1. Nhưng t-1 thì không có .. vậy có phải mf,0 tính Gmin=0->Gmax=0; và Mb,0 = Gmin=1 -> Gmax=255.. E hiểu như thế có đúng ko ạ ??Em cảm ơn thầy ạ!

Công thức trên slide là tính cho k+1 chứ không phải là tính k bằng t(k-1)Như vậy bạn sẽ tính t(0) trước rồi dựa vào t(0) tính mf,0 và mb,0)rồi từ đó tính t(1) rồi tính mf,1 và mb,1

Với t(0) thì bạn có thể mặc định là điểm ở giữa thang tần suất là khoảng 127

Thầy Hưngem thưa thầy trong câu hỏi mẫu dạng bài tập của thầy có một câu hỏi là : " Kỹ thuật đạo hàm bậc một và bậc hai trong tìm biên có gì khác nhau? "Với câu hỏi này thì em mới chỉ so sánh  được sự khác nhau về cách tính và công dụng của từng loại,

Page 7: Thac Mac Mon Xu Ly Anh

còn về chi tiết thuật toán thì em chưa hiểu rõ lắm, thầy có thể giải thích giúp em với được không ạ?em cảm ơn thầy! Dear bạn

Đạo hàm bậc 1 khác bậc 2 cái gì?Đạo hàm bậc 1 tìm được gì còn đạo hàm bậc 2 tìm được gì?Trả lời được 2 câu này bạn sẽ trả lợi được câu hỏi...

Lưu ý biên là sự thay đổi đột ngột của mức xám -> tìm biên là tìm sự thay đổi đột ngột của mức xám

Thầy HưngThưa thầy, giả sử trong ma trận có các giá trị đều lớn hơn 1, lớn nhất là 15, và khuyết giá trị 10, như thế em chỉ dùng g chạy từ 2 đến 15 cho bài toán tìm ngưỡng tự động được không ạ? Nếu thay đổi lại g chạy từ 0 đến 15 thì lại ra khác ạ!

Thuật toán tìm ngưỡng là đều chạy từ min đến max hếtThế nên phải chạy từ 0 đến 15 chứ không chạy giữa chừng được

Thầy HưngTương tự với kỹ thuật Prewitt và Sobel ạ, mà thầy xem lại giúp em luôn ma trận Prewitt với ạ, vì em thấy tổng các phần tử trong ma trận lại khác 0Em cảm ơn thầy ạ!Về nguyên tắc là như bạn nói phải có cả dòng cuối, nhưng do chúng ta cộng luôn 2 ma trận dọc và ngang lại với nhau nên thầy không tính đoạn đó vì khi cộng vào nhau thì đằng nào phần đó cũng bị loại

Với Prewitt: gx là -1 0 1-1 0 1-1 0 1và gy là-1 -1 -10  0  01  1  1

Như vậy là vẫn bằng 0 còn gì??

Thầy HưngEm chào thầy.Ở 1 email thầy có trả lời một bạn cách tính m(f, 0) và m(b, 0) là dựa vào công thức ở phía trên, nhưng công thức này Gmax của m(f, 0) lại phụ thuộc vào θ(-1):Vậy θ(-1) được tính như thế nào?Em cảm ơn thầy.

Email này bị thiếu ký tự vì trong slide của thầy là θk-1 chứ không phải là θ-1Vì làm gì có θ-1

θ0 thường được chọn luôn là một giá trị nào đo ( trong hầu hết trường hợp là mức xám ở giữa 127 chẳng hạnBạn đọc lại slide đi,,,

Thầy Hưng

PS: Chắc thầy copy luôn công thức của bạn kia mà không nhìn, bạn nên tham khảo công thức trong slide nhéEm chào thầy.Tại sao khi tính tích nhân chập lại phải xoay ma trận nhân chập 180?.Theo em được biết thì ma trận nhân chập W là 1 ma trận hằng số được người ta tìm ra sẵn để phục vụ một mục đích nào đó, nó không phụ thuộc vào ảnh gốc.

Page 8: Thac Mac Mon Xu Ly Anh

Vậy tại sao lại phải xoay 180 trước khi tiến hành phép nhân chập, thay vào đó người ta xoay sẵn ma trận nhân chập W sẵn cho mình.Đỡ mất công xoay. Mà ma trận đó người ta cũng ko bảo là xoay hay chưa.Em tham khảo một số tài liệu xử lý ảnh của thầy Bùi Quang Hoan, thầy Đỗ Năng Toàn (PTIT) và thầy Hoàng Văn Hiệp (ĐH KH TN) cũng không thấy đề cập tới vấn đề xoay này.Hy vọng thầy có thể giải đáp giúp em.Em cảm ơn thầy

Bạn xem slide ch03-2 trang 17 nhéĐấy là ví dụHỏi một số bạn trong lớp có nghe giảng sẽ biết

Xoay là nhằm mục đich dễ cho người thiết kế ma trận nhân chập vì phản ứng của ma trận nhân chập cùng hướng với chính ma trận nhân chập đó

Ví dụ trang 17 đấynếu không xoay thì khi bạn tính hiệu ứng sẽ bị ngược, nhưng nếu xoay thì hiệu ứng sẽ xuôi chiều

(1 điểm ảnh sẽ được nhân ra đúng hình ma trận đó chứ không phải là xoay lộn lại 180 độ)

Thầy HưngThưa thầy, cho em hỏi một chút ạ! Như bạn Cường đã hỏi ở trên ấy ạ, là cái sample có tác dụng j ạ. 

Ví dụ như có 4 điểm (3,3); (4,4); (5,5) (4,5) Mà sample [3  4 ] thì tâm là (3,3) và (4,4)  hay là (3,3) ( 4,5) ạ ? Bọn em vẫn chưa hiểu rõ lắm ạ! 

Em cảm ơn thầy! 

Thầy trả lời rồi nhé, bạn đọc các trả lời trước của thầy đi.

Sample là mẫu ta muốn phân loại (một mẫu mới, không thuộc tập các mẫu trong tập học)Nó là một phần của hàm đó thôi, còn k-mean thông thường chỉ dùng để xác định các tâm thôi.

Cái hàm của thầy có cả phần phân loại một mẫu sample mới dựa vào các tâm vừa tìm thầy luônThầy Hưngem thưa thầy, trong thuật toán đẳng điệucông thức đầu tiên trong slide mới chỉ nói đến tính mf,0 và mb,0còn mf,k và mb,k tính thế nào ạ

Bạn tính được mf,0 rồi mb,0 dựa vào ngưỡng θ0

rồi từ đó tính ra ngưỡng θ1 rồi tính mf,1 và mb,1 rồi vân vân và vân vân

mf,k và mb,k được tính dựa vào ngưỡng thứ θk

Nó là thuật toán đệ quy mà.Bước sau tính dựa vào bước trước

Thầy HưngEm chào thầy ạ!Thầy cho em hỏi 1 số vấn đề sau ạ:- Tác dụng của cân bằng tần suất- Ý tưởng của việc biến đổi của sổ di chuyển- Tại sao phải quay ma trận nhân chập 180 độ

Page 9: Thac Mac Mon Xu Ly Anh

Mong sớm nhận được giải đáp của thầy!Em cảm ơn thầy ạ!

- Cân bằng tần suất là nhằm thay đổi các giá trị điểm ảnh sao cho số điểm ảnh có các mức xám khác nhau là gần bằng nhau (lý tưởng là bằng nhau hết) để đạt gần đến bức ảnh cân bằng lý tưởngMột bức ảnh cân bằng lý tưởng thông thường sẽ có chất lượng tốt hơn và hài hòa hơn về độ tương phản.Nếu bạn làm bài tập về cân bằng tần suất sẽ thấy điều này.

- Ý tưởng cửa sổ di chuyển thì thầy có trả lời trong các thư trước rồi, bạn xem lại nhé

- Tại sao ma trận quay 180 độ bạn hỏi các bạn trong lớp nhé, cái này thầy giải thích khá nhiều rồi.Xem lại slide nhân chập và ngiên cứu kỹ ví dụ trong trang 17 chương 03-2 nhé

Thầy HưngThưa thầy trong khi khuếch tán, nếu cọng phần dư vào điểm ảnh bên cạnh mà lớn hơn 255 hoặc nhở hơn 0 thì làm thế nào ạ? em đang phân vân giữa 2 phương pháp : 1 là nếu qusa thì đập bẹp xuống 255 nếu âm thì kéo nó lên 0, 2 là công phần dư sáng điểm tiếp nữa.Thầy có thể trả lời hộ em được không ạ??Em cảm ơn thầy!Bạn làm như bt

Nếu lớn hơn 255 thì làm tròn xuống 255 và chuyển phần dư sang tiếpNếu nhỏ hơn 0 thì làm tròn thành 0 và chuyến phần dư âm sang tiếp

265 -> 255 dư 10

-10 -> 0 dư -10

Đơn giản vậy thôi.

Thầy Hưnge chào thầy !thầy cho e hỏi là : Nén dữ liệu nói chung và nén ảnh nói riêng khácnhau cơ bản ở điểm gì ạ?e cảm ơn thầy !

Nén dữ liệu nói chung thông thường là chỉ tìm thông tin lặp lại để loại bỏ hoặc mã hóa theo một cách thông minh để giảm không gian lưu trữ. Nén dữ liệu là nén có bảo toàn vì không thể mất dự liệu được.

Tuy nhiên vơi nén ảnh, thì ngoài việc như nén dữ liệu thông thường thì ảnh có đặc thù riêng. Ngoài việc tìm dữ liệu lặp và mã hóa thông mình thì ta còn có thể loại bỏ thông tin không quan trọng. Ví dụ như trong nén JPEG là loại bỏ thông tin tần số cao của ảnh... Như vậy nén ảnh "thường" là không bảo toàn vì một phần dữ liệu có thể bị mất nhưng không làm ảnh hưởng đến giá trị cảm quản của bức ảnh (mắt người không phân biệt được)Hỏi về thuật toán K-nn ( k nearnest neighbors )Thầy ơi cho em hỏi thuật toán này ở chương 6 : Nhận dạng ảnh , thuật toán này thao tác với cơ sở dữ liệu chứ không phải trực tiếp với ảnh đúng không ạ ? Ý tưởng của thuật toán này có phải : là  so sánh độ  phù hợp của mẫu mới- đối tượng cần phân loại với từng nhóm chủ  đề trong tranning data, dựa trên k  mẫu trong tập huấn luyện mà có độ tương tự với mẫu mới là lớn nhất. Em cảm ơn thầy !Thuật toán k-nn là thuật toán phân loại, có thể được thực hiện trên nhiều đổi tượng ảnh.Có nhiều cách để áp dụng k-nn, cái mà chúng ta học chỉ là phần cốt lõi, còn áp dụng trên đối tượng như thế nào thì lại là câu chuyên khạc

Với k-nn thì mỗi đối tượng là 1 điểm trong không gian N chiều (được biểu diễn bằng N tham số)Khi chúng ta đã có một tập hợp các đối tượng có trước thì việc phân loại đối tượng mới sẽ bằng cách xác định tính tương đồng của đối tượng với với đối tượng cũ

Page 10: Thac Mac Mon Xu Ly Anh

Tính tương đồng ở đây được xác định dựa vào một giả định cơ bản đó là với những đỗi tượng gần nhau trong không gian N chiều thì sẽ gần nhau trong tính chất và có khả năng cùng một loại cao hơn những đối tượng xa nhau. Điều này không phải lúc nào cũng đúng và rất tùy thuộc vào cách chọn và biểu diễn đối tượng băng N tham số nào.

Với k-nn thì việc xác định loại của đối tượng dựa vào k đối tượng gần nhất (tương đồng nhất) với đối tượng đang xét, rồi sử dụng hệ thông phiếu bầu để xác định. Và để nâng cao tính chính xác thì việc sử dụng khoảng cách vào việc đưa ra sức nặng của các phiếu bầu giúp loại bỏ các vấn đề liên quan đến việc một loại do có quá nhiều phiếu bầu luôn thắng hoặc một vài mẫu có sai số làm ảnh hưởng đến độ chính xác của việc phân loại

Thầy Hưngcòn cái ls có phải là các điểm để phân vùng đúng ko ạ, em vẫn chưa hiểu cái sample lắm, vì theo bài này lúc đầu e chọn 2 điểm trong ls rồi theo các bước tính khoảng cách thì ta lại phân loại dc các điểm thuộc vùng nào, rồi tính lại tọa độ tâm, theo thầy thì sample dùng để tìm các tâm thì tìm theo cách nào ạ!

Cho thầy xin lỗi.Hôm qua thầy trả lời bạn mà chưa check lại bài tập (nhiều bạn hỏi quá nên thầy phải trả lời nhanh)

Sample trong bài tập là mẫu cần phần loại, nghĩa là nó đơn thuần là một mẫu bạn muốn phân loại dựa vào tập ls. (sample giống như một khuôn mặt mới cần nhân dạng dựa vào tập hợp những khuôn mặt đã có sẵn)

Trong thuật toán k trung bình thì không có sample vì thông thường người ta chia ra thành các tâm thôi, còn sau đó mới dùng các tâm đó để phân loại các đối tượng sau. Ở đây hàm này làm cả 2 nhiệm vụ, trước tiên là học để tạo ra các tâm, rồi sau đó dựa vào vị trí các tâm để xem sample của chúng ta thuộc tâm nao (khoảng cách gần nhất)

Thầy HưngThưa thầy trong thuật toán phép lọc trung binh theo k giá trị gần nhất với ma trận cửa sổ lọc:

1     8      21     3      2 2     4      4

vậy 3 giá trị k gần nhất ở đây sẽ lấy (2,2,3) hay ( 2,3,4) hay (3,4,4) ạ. :)

Cả ba trường hợp đều đúng.Nếu bạn đi học thì bạn sẽ biết là trong trường hợp này có nhiều cách để lấy k giá trị gần nhất (thầy đã giải thích câu này trên lớp rồi.Khi làm bài bạn phải chọn một cách thông nhất để làm bài sao cho kết quả là thông nhất.

Trong trường hợp bài tập không nêu bạn phải nêu ra cách lấy k giá trị gần nhất trước khi làm bài ví dụ:

Luôn lấy các giá trị sao cho trung bình cộng là nhỏ nhấtLuôn lấy các giá trị sao cho trung bình cộng là lớn nhấthoặc luôn lấy các giá trị sao cho trung bình cộng là gần với giá trị gốc nhất

Em thưa thầy, có phải bài tập trong đề thi là các bài áp dụng các thuật toán trong các bài tập thực hành mà khi học thầy yêu cầu làm phải không ạ? Có thêm bớt chỗ nào không ạ? Thầy có thể gửi cho chúng em một số bài tập mẫu cụ thể không ạ? vì chỗ đề cương và bài tập mẫu thầy gửi có mỗi vài bài :-ssKo

Bài tập thực hành chỉ là một phần thôi, bài tập thi còn có cả các phần khác ví dụ như nén ảnh v vThầy Hưng

Page 11: Thac Mac Mon Xu Ly Anh

Em thưa thầy, thế các bài tập trong bài thi có cho các ma trận không hay chúng em phải tự nhớ ạ? ví dụ như khuếch tán lỗi 2 chiều theo Floyd thì đề có cho ma trận không ạ?

Các bạn nên nhớ vì kể ca trong trường hợp bài tập có ma trận thì bạn vẫn phải đưa ra ví dụ trong một số câu lý thuyết hoặc câu hỏi nâng caoThầy HưngThầy ơi phép lọc trung bình theo k giá trị gần nhất trong slide của thầy, k giá trị gần nhất là sao ạ, em thấy ví dụ trong slide  k=3, và tìm ra average(k giá trị gần nhất) =8,

em cám ơn Thầy

K giá trị gần nhất là về giá trị chứ không phải về vị trí nhé.Trong 8 điểm xung quanh tâm trong cửa sổ 3x3 thì 3 giá trị gần nhất(kể cả điểm tâm) là những điểm nào?Thẩy HưngLọc trung vị với ma trân ảnh I là 4x4,xét cửa sổ 3x3,em  tìm ra được Med, vậy khi em xét | I(i,j)-Med(W(i,j))|>=ngưỡng, là phải xét I(i,j) là xét toàn bộ các điểm trong ma trận,hay chỉ xét các điểm trong cửa sổ, 

em cám ơn Thầy

I(i,j) là giá trị tại tâm của cửa sổ 3x3 chứThầy HưngThua thay, trong slide 5 chu0ng 05, cong thuc tim hsmooth do' a, thihraw la gi a.?

Hraw chính la gia trị h(g) ban đầu, hsmooth là giá trị sau khi tính toán

Em chao thay, em hoi chut duoc khong a!Thay ra de thi mon XLA dung khong a? Co' gioi han duoc phan ly thuyetkhong thay? E tha'y mot ban de cuong co 34 cau ly thuyet, do' la thaygui phai khong a.?E cam on thay!

Đúng rồi.Không giới hạn đâu.Có thể là 1 trong 34 câu đó đấy :)Thầy HưngThưa thầy!Em muốn hỏi về vấn đề cân bằng tần suất, no_level là số mức xám ảnh đã cân bằng sẽ có, vậy nếu như no_level đúng bằng số cấp xám của ảnh gốcthì việc cân bằng tần suất còn có ý nghĩa gì nữa ạ khi mà ảnh gốc và ảnh cân bằng không có sự thay đổi tức là h(g) = h(g') luôn xảy raEm cảm ơn thầyBạn nghĩ vậy là sai

Khi cân bằng tần xuất, nếu no_level bằng chính số mức xám ban đầu thì chúng ta sẽ thu được một bức ảnh kết quả có số mức xám như ảnh gốc, tuy nhiên các điểm ảnh đã bị thay đổi giá trị.Bạn tưởng tượng là mỗi giá trị mức xám là một túi, trong mỗi túi này sẽ có một số điểm ảnh tương ứng với mức xám đó, số điểm ảnh trong tui g chính là h(g)Phép cân bằng tần xuất sẽ cố gằng đổ điểm ảnh từ túi này sang túi kia (thông thường là các túi gần nhau) để sao cho số điểm ảnh trong mỗi túi là gần bằng nhau nhất có thể (gần giá trị trung bình TB nhất)

Với no_level khác số mức xám ban đầu thì ngoài dồn điểm ảnh từ túi này sang túi khác, chúng ta còn vứt bớt túi và dồn điểm ảnh trong các túi đã vứt vào các túi còn lại

Thầy Hưng

Page 12: Thac Mac Mon Xu Ly Anh

Em chào thầy ạ!     E có một thắc mắc về nhân chập mong thầy giải đáp cho e ạ.     Thầy có bảo là khi nhân chập thì phải xoay ma trận nhân chập 180 độ, trong ví dụ nhân chập thôi ( bt nhỏ để code ) thì thầy có xoay ma trận nhân chập 180 độ nhưng trong các ví dụ trong slide về phát hiện biên với ma trận Hx và Hy thì khi nhân chập các ma trận này không được xoay. Vậy nên e có thắc mắc là làm như thế nào thì đúng ạ?     E cảm ơn thầy nhiều!Dear bạnNhân chập có rất nhiều công thức, về cơ bản công thức nào cũng đúng, có điều nó được dùng trong trường hợp nào

Trong bài tập nhỏ và lớn thầy có xoay vì thầy yêu cầu khi các bạn viết nhân chập các bạn phải xoay nên khi tính Hx và Hy thầy xoay vì công thức ma trận là có xoay 180 độ

Tuy nhiên trong ví dụ phát hiện biên, nhân chập chỉ là một cách làm đơn giản phép tính tìm biên, các trọng số được khớp tương ứng nên không cần xoay.

Lưu ý là xoay 180 độ nhằm mục đích dễ cho chúng ta hiểu hiệu ứng của nhân chập, nếu trong trường hợp chúng ta đã tính toán ra được hiệu ứng này (tính gradient là một ví dụ) thì xoay hay không không quan trọng nữa, trong ví dụ không xoay để cho chúng ta dễ hình dung về vị trí của x+1 và y+1 trương đương với x và y.

Thầy Hưngem thưa thầy, thầy giải đáp cho e vấn đề sau với ạ:nếu một hàng trong ma trận khuếch tán lỗi một chiều của em là35 44 55 và ngưỡng là f=90thì cụ thể các bước tính tại từng vị trí thế nào ạ?em chân thành cảm ơn thầy!Dear bạn

Bạn sẽ tính như sau

Xét vị trí thứ nhất: 35 < 90 -> vi trí 1 có giá trị 0 và nhớ 35 sang bên phải thành 44+35=79Xét vị trí thứ hai: 79 < 90 -> vị trí 2 có giá trị 0 và nhớ 79 sang bên phải thành 79+55=134Xét vị trí thứ ba: 134 > 90 -> vị trí 2 có giá trị 255 và nhớ 134-255=-121 sang bên phải (nếu không có giá trị tiếp theo khi không phải nhớ sang bên phải nữa)

Vậy thôiEm thưa thầy, thầy giải đáp giúp chúng em một số vấn đề trong câu hỏi lý thuyết với ạ- câu thứ nhất: mô hình raster khác mô hình vecto ở điểm nào? trường hợp nào sử dụng raster, trường hợp nào sử dụng vecto- câu thứ hai: mô hình lưu trữ vecto khác mô hình cơ bản ở điểm nào? nếu ảnh vecto có nhiều ưu điểm tại sao không sử dụng veco mà vẫn phải dùng ảnh raster- câu thứ ba: tại sao kỹ thuật nửa cường độ lại được sử dụng trong in ấn? ý tưởng cơ bản của kỹ thuật nửa cường độ là gì?- câu thứ tư: để in ảnh đa cấp xám với chỉ mực mầu đen cần sử dụng kỹ thuật gì? khuếch tán lỗi hỗ trợ được gì cho kx thuật này? Khuếch tán lỗi hơn gì tách ngưỡng thông thường?Chúng em rất mong thầy giải đáp sớm ạ!Chúng em xin chân thành cảm ơn thầy!Dear bạnTheo bạn thì sử dụng kỹ thuật gì?

Nếu chỉ có mực đen thì không thể thể hiện màu xám -> phải tìm cách thể hiện màu xámMầu xám là mầu trằng và mầu đên cộng lại, và do mắt người không phân biệt được 2 điểm quá gần nhau (gộp lại thành 1) -> in một đốm đen nhỏ trong 1 hình vuông trắng -> hafttoning (nửa cường độ)

Em thưa thầy,Để in ảnh đa cấp xám với chỉ mầu mực đen thi sử dụng kĩ thuật gì ạ?

Vào 02:31 Ngày 06 tháng 12 năm 2012, Viet Hung Pham <[email protected]> đã viết:

Page 13: Thac Mac Mon Xu Ly Anh

Tất cả các câu này thầy đều giảng trên lớp rồi...

Vector và raster bạn lên mạng mà tìm, họ nói rất nhiều

Vector là để thiết kế, in ấn khổ lớn, lưu trữ mô hình 3D v v

Raster để lưu trữ ảnh thông thường và vì ảnh dễ lưu lại ở dạng raster hơn nên hầu như ảnh raster được sử dụng

Nửa cường độ bạn search Halftoning, họ sẽ nói cho bạn tại sao phải dùng haftoning

Khuếch tán lỗi là để giảm thiểu lỗi do quá trình phân ngưỡng gây ra (phân ngưỡng vì mực chỉ in được đen hoặc trắng, sử dụng trong halftoning)Khi phân ngưỡng, giá trị điểm ảnh sẽ bị làm tròn và mất đi, khuếch tán lỗi giữ lại một phần giá trị này để đảm bảo bức ảnh không bị khác quá nhiều (lưu ý nhờ tính chất là mắt người ở một khoảng cách nào đó thì không phân biệt được 2 trường hợp sau: 2 điểm ảnh 50% cạnh nhau và 2 điểm ảnh 1 100% và 1 0% cạnh nhau, chỉ nhìn thấy một mầu xám 50%)

Thầy HưngEm chào thầy!

Em có một số câu hỏi về đề cương như sau:

1. Về ý tưởng của cửa sổ di chuyển có vẻ khá chung chung. Theo em thì nó là việc cải thiện chất lượng ảnh hoặc làm thuận tiện cho các phép biến đổi khác dựa vào việc thay đổi giá trị của điểm ảnh tùy theo các điểm ảnh lân cận trong một phạm vi nào đó (hay có thể hiểu là lọc). Thầy có thể cho em xin ý kiến về câu trả lời này được không ạ?

2. Phép lọc trung vị và lọc trung bình đều được sử dụng để làm trơn ảnh, giảm nhiễu. Nó chỉ khác ở việc chọn giá trị để so sánh. Vậy trong các trường hợp nào thì chọn phép lọc nào ạ, thầy có thể gợi ý về ý này được không ạ?

Em cảm ơn thầy! Phần này bạn hiểu đúng nhưng nên diễn dải cụ thể ra.Cửa sổ di chuyển hay phép cuộn là một công cụ để áp dụng các phép toán một cách cục bộ, với đầu vào là các điểm lân cận trong phạm vi cửa sổ. Giá trị điểm ảnh kết quả chỉ phụ thuộc vào giá trị điểm ảnh lân cận trên ảnh gốc và phép toán được áp dụng. Thông thường cửa sổ di chuyển được dùng như một phép trung gian nhằm thực hiện nâng cao chất lượng ảnh hoặc áp dụng một thuật toán đồng nhất lên cả bức ảnh. ( trong đó có lọc cũng như là nhân chập)

- Trung vị và trung bình đều là lọc cục bộ, dựa trên một ngưỡng nào đó. Tuy nhiên ở đây nó khác nhau rất nhiều về giá trị so sánh và thay thế. 

Với trung vị chúng ta tìm kiếm giá trị nằm giữa trên phương diện số lượng ( chúng ta không xét đến vị trí trên phương diện giá trị) vì vậy thông thường trung vị sẽ thể hiện giá trị đại diện của một bộ phận số đông, 

còn với trung bình, mỗi điểm ảnh sẽ đống góp một phần cho giá trị cuối cùng nên trái trị trung bình là đại diện cho tất cả các giá trị. 

Nếu bạn nào nhớ thầy có một ví dụ trên lớp về những sự khác biệt này, ví dụ về một người mới vao công ty nên hành sử như thế nào dựa vào các động nghiệp mới của anh ta. Các bạn có thể lấy ví dụ tương tự để trình bày cho phần này.

Thầy Hưng

Em thưa thầy, về báo cáo bài tập lớn em muốn hỏi 1 số câu hỏi:

Page 14: Thac Mac Mon Xu Ly Anh

1. Về "Ý tưởng thử nghiệm" của báo cáo, đó là ý tưởng về cái gì ạ, về bài toán hay những ví dụ liên quan đến bài toán? Em đang không biết làm phần này của báo cáo như thế nào :(

2. Về phần "Thực hiện ý tưởng", ví dụ như bài Canny, có phải mình trình bày các bước của bài toán và code tương ứng không ạ?

3. Trong slide nên có những phần nào thầy có thể gợi ý được không ạ, tại vì gói gọn trong 10 slide thì hơi khó :(

Về ý tưởng thực nghiệm bạn phải nêu rõ mình muốn làm gì, chứng minh hay kiểm chứng gì? Nêu lý do tại sao lại quyết định chọn kiểm chứng những thứ đó.

Vể thực hiện ý tưởng thì bạn cần nêu sơ bộ về canny (nếu bạn có thay đổi gì thì phải nêu ra) ngoài ra phải nói cụ thể về các thực nghiệm của mình, ý định dùng những thực nghiệm có tính chất cụ thể như thế nào để kiểm chứng các giả định, hoặc phỏng đoán ở trên

Trong slide nên có cấu trúc giông report. Tuy nhiên phần nào trình bày được thì các bạn nên làm slide it thôi, phần chủ yếu là những số liệu thực nghiệm, các kết quả chạy canny v.v để tiện giải thích Slide có thể dài hơn nếu các bạn nhiều số liệu hoặc ảnh tuy nhiên nên tiết kiệm

Thầy Hưng

BÀI T P NHÓM PH N 4Ậ ẦTrong phần bốn này các bạn sẽ làm quen với các thuật toán nâng cao. Các nhóm chỉ cần triển khai bài tập nào cần thiết phục vụ nho topic của mình. Ví dụ:

Nhóm chọn Canny sẽ phải triển khai Canny Nhóm chọn phân vùng với tách ngưỡng tự động sẽ phải triển khai các thuật toán tách

ngưỡng tự động Nhóm chọn nhận diện ảnh theo không gian thì phải triển khai các thuật toán khoảng cách

lớn nhất, k trung bình và k láng giềng Nhóm chọn nhân chập sẽ phải triển khai một trong ba bài tập trên vì nhân chập là bài tập

bắt buộc

Trong tất cả các bài tập ảnh a là ảnh có 256 mức xám. Giá trị max và min của các điểm ảnh là 0 và 255.

Kỹ thu t CannyậViết hàm canny sao cho nếu:

b = canny(a,s,gx,gy,ht,lt)

với a là ma trận thể hiện ảnh đầu vào s là ma trận làm trơn gx là ma trận đạo hàm bậc 1 chiều x gy là ma trận đạo hàm bậc 1 chiều y

Page 15: Thac Mac Mon Xu Ly Anh

ht là ngưỡng cao khi tách điểm chắc chắn là biên lt là ngưỡng thấp để lần theo biên

thì b là ảnh kết quả của việc tìm biên với canny.

Ví dụ: ảnh a

a = [0 0 0 0 0 0 00 0 0 0 0 0 00 0 128 128 128 0 00 0 128 128 128 0 00 0 128 128 128 0 00 0 0 0 0 0 00 0 0 0 0 0 0

]

Page 16: Thac Mac Mon Xu Ly Anh

Với s =[0 0 00 1 00 0 0 ], gx =[ 1 0 −1 ], gy =[ 1

0−1], ht=127,hl=64

thì agm =[0 0 0 0 0 0 00 0 128 128 128 0 00 128 181.02 128 181.02 128 00 128 128 0 128 128 00 128 181.02 128 181.02 128 00 0 128 128 128 0 00 0 0 0 0 0 0

] (ma trận độ lớn của đạo hàm)

và aga =[NaN NaN NaN NaN NaN NaN NaNNaN NaN 2 2 2 NaN NaNNaN 0 1 2 3 4 NaNNaN 0 0 NaN 4 4 NaNNaN 0 7 6 5 4 NaNNaN NaN 6 6 6 NaN NaNNaN NaN NaN NaN NaN NaN NaN

] (ma trận hướng của đạo hàm)

trong mà trận hướng thì các số tương ứng với hướng như sau [5 6 74 ¿ ¿

2¿1¿]

và kết quả là b = [0 0 0 0 0 0 00 0 0 255 0 0 00 0 255 255 255 0 00 255 255 0 255 255 00 0 255 255 255 0 00 0 0 255 0 0 00 0 0 0 0 0 0

]Với s =[0 0 0

0 1 00 0 0 ], gx =[ 1 0 −1 ], gy =[ 1

0−1], ht=150,hl=129

thì kết quả là b = [0 0 0 0 0 0 00 0 0 0 0 0 00 0 255 0 255 0 00 0 0 0 0 0 00 0 255 0 255 0 00 0 0 0 0 0 00 0 0 0 0 0 0

]

Page 17: Thac Mac Mon Xu Ly Anh
Page 18: Thac Mac Mon Xu Ly Anh

Với s =[0 0 00 1 00 0 0 ], gx =[ 1 −1 ], gy =[ 1

−1], ht=127,hl=64

thì kết quả là b = [0 0 0 0 0 0 00 0 255 255 255 0 00 255 0 0 255 0 00 255 0 0 255 0 00 255 255 255 255 0 00 0 0 0 0 0 00 0 0 0 0 0 0

]Với s =[0 0 0

0 1 00 0 0 ], gx =[1 0 −1

2 0 −21 0 −1], gy =[ 1 2 1

0 0 0−1 −2 −1], ht=127,hl=64

thì kết quả là b = [0 0 0 0 0 0 00 0 0 255 0 0 00 0 255 255 255 0 00 255 255 0 255 255 00 0 255 255 255 0 00 0 0 255 0 0 00 0 0 0 0 0 0

]

Page 19: Thac Mac Mon Xu Ly Anh

Làm tr n histogramơViết hàm histsmooth sao cho nếu:

b = histsmooth (a,w)

với a là histogram đầu vào w là chiều rộng của hàm smooth

thì b là histogram sau khi đã làm trơn.

Ví dụ: histogram a

a = [ 34 56 234 24 129 ]

với w = 5 thì b =[ 65 70 95 89 77 ]

với w = 3 thì b =[ 30 108 105 129 51 ]

với w = 4 thì hàm nên báo lỗi với error('...');

??? Error using ==> histsmooth at ...

w should be an odd number not 4

Thu t toán đ ng đi uậ ẳ ệViết hàm ridandcal sao cho nếu:

t = ridandcal (a)

với a là histogram đầu vào

thì t là ngưỡng thu được từ thuật toán đẳng điệu

Ví dụ:

với a = [ 12 34 45 45 46 78 201 78 60 ]

thì t = 5

với a = [ 12 34 45 45 46 ]

thì t = 3

Page 20: Thac Mac Mon Xu Ly Anh

Thu t toán đ i x ng n nậ ố ứ ềViết hàm symbg sao cho nếu:

t = symbg (a,b,p)

với a là histogram đầu vào b =1 nếu nền sáng hơn b=0 nếu nền tối hơn p là tỉ lệ phần trăm ta muốn giữu lại nền (ví dụ p=95)

thì t là ngưỡng thu được từ thuật toán đối xứng nền

Ví dụ:

a = [ 12 34 45 45 46 78 201 78 60 ]

với b = 1 và p=95

thì t = 4

với b = 1 và p=80

thì t = 5

với b = 0 và p=80

thì t = 9

Thu t toán tam giácậViết hàm triangle sao cho nếu:

t = triangle(a , b)

với a là histogram đầu vào b =1 nếu nền sáng hơn b=0 nếu nền tối hơn

thì t là ngưỡng thu được từ thuật toán tam giác

Lưu ý, chúng ta có thể giả định là đỉnh min của tam giác là ở vị trí 0 nếu nền sáng và ở vị trí mức sáng nhất nếu nền là tối

Ví dụ:

a = [ 0 12 34 35 40 55 67 78 202 60 ]

với b = 1 thì t = 7

Page 21: Thac Mac Mon Xu Ly Anh

Thu t toán k láng gi ngậ ềViết hàm knn sao cho nếu:

class = knn(sample, ls , k)

với sample là đối tượng cần phân loại ls là tập hợp mẫu k là số láng giềng cần tìm để phân loại

thì class là phân loại của knn về sample dựa vào đếm k láng giềng gần sample trong ls

Ví dụ:

sample = [ 0 0 ]

ls = [1 1 01 2 01 3 11 4 11 5 1

]mỗi dòng là một mẫu, bao gồm 2 tham số và phân loại

k = 2 thì class = 0

nếu sample = [ 2 4 ] thì class = 1

Thu t toán k láng gi ng nâng c pậ ề ấViết hàm wknn sao cho nếu:

class = wknn(sample, ls , k)

với sample là đối tượng cần phân loại ls là tập hợp mẫu k là số láng giềng cần tìm để phân loại

thì class là phân loại của wknn về sample dựa vào k láng giềng gần nhất với sample, tuy nhiên phiếu bầu có giá trị tỉ lệ nghịc với khoảng cách của láng giềng đến đối tượng

Ví dụ:

sample = [ 1 0 ]

ls = [1 1 01 2 01 3 11 4 11 5 1

]mỗi dòng là một mẫu, bao gồm 2 tham số và phân loại

Page 22: Thac Mac Mon Xu Ly Anh

k = 5 thì class = 0

Thu t toán kho ng cách l n nh tậ ả ớ ấViết hàm maxdis sao cho nếu:

[class,cp] = maxdis (sample, ls, t)

với sample là đối tượng cần phân loại ls là tập hợp mẫu t là ngưỡng θ

thì class là phân loại của maxdis về sample dựa vào các vùng mà maxdis đã chia ra

các vùng này sẽ được thể hiện bằng cp (là danh sách các điểm tâm các vùng)

Ví dụ:

với sample = [ 3 4 ]

ls = [3 34 45 6]mỗi dòng là một mẫu, bao gồm 2 tham số

t = 2

thì class = 1 và cp = [4 4.335 6 ]

nếu sample = [ 3 4 ]

ls = [3 34 45 67 7

] và t=2

thì class = 1 và cp = [4.75 57 7]

nếu sample = [ 6 6 ]

ls = [3 34 45 67 7

] và t=2

thì class = 2 và cp = [4.75 57 7]

Page 23: Thac Mac Mon Xu Ly Anh

Thu t toán k trung bìnhậViết hàm kmean sao cho nếu:

[class,cp] = kmean (sample, ls, k)

với sample là đối tượng cần phân loại ls là tập hợp mẫu k là số tập muốn phân loại

thì class là phân loại của kmean về sample dựa vào k vùng mà kmean chia ra

k vùng này sẽ được thể hiện bằng cp (là danh sách các điểm tâm các vùng)

Ví dụ:

sample = [ 3 4 ]

ls = [3 34 45 6]mỗi dòng là một mẫu, bao gồm 2 tham số

k = 2

thì class = 1 và cp = [ 3 34.5 5]

hoặc class = 2 và cp = [4.5 53 3]

hoặc class = 2 và cp = [5.6 63.5 3.5 ]

ở đây kmean có thể cho ra các kết quả khác nhau mỗi lần chạy (lý do là vì k điểm đầu tiên được khởi tạo một cách ngẫu nhiên)

Dear các bạnCó một nhầm lẫn về phía thầy khi trả lời bạn lần trước.Thầy có nói là phải so sánh theo hướng vuông góc với gradient tại bước 4.Điều này là sai.Trong bước 4 ta phải so sánh theo hướng của gradient.Quay lại câu hỏi của bạn ban đầu.Bạn đúng, về nguyên tắc điểm này phải bị loại ra ngay từ bước 4, và nó sẽ không được xét đến tại bước 5 nữa.

Page 24: Thac Mac Mon Xu Ly Anh

Thầy gửi lại bạn bản đính chính.Thầy HưngPS: trong code của thầy có một lỗi do thầy chưa tách bước 4 và bước 5 ra khỏi nhau nên làm cho kết quả bị sai lệch

Thầy ơi thế điểm 128 ở trong hình (dòng 3 cột 4) có hướng là 2, nghĩa là G1 và G2 đều là 181 lớn hơn 128, thế thì phải xóa điểm này đi chứ ạ?

Dear ban@hai hai:Đúng rồi :) Sorry thầy làm hơi nhanh nên có nhầm lẫn ;)

@Các bạn:Gửi các bạn bản đính chính bài tập 4Có vấn đề gì thì báo cho thầy nhé :)Thầy ơi thầy xem lại câu hỏi của em đi ạ :( Vị trí đó là  0 < 128 < 181 (so theo chiều dọc) nghĩa là G(i,j) > G1 nhưng  lại < G2 cơ mà thầy, phải xóa chứ ạ?

Bạn xem lại slide nhé.Chúng ta xét G1 và G2 là 2 điểm có thể là biên, nghía là 2 điểm này phải nằm theo hướng vuông góc với gradientĐiểm của bạn nằm đúng tại vị trí có gradient 2 là đi xuống nghĩa là 2 điểm bạn phải xét là 0 và 128 chứ không phải 0 và 181Thầy HưngEm chào thầy!

Em có câu hỏi về bài Canny. Như ở trong hình em gửi kèm, ở vị trí 128 bôi đen, hướng của nó là xuống dưới, vậy ở bước loại bỏ điểm không phải cực đại ta sẽ xét 2 điểm lân cận là trên và dưới nó. Từ ma trận độ lớn ta có 0 < 128 < 181.02, như vậy ta phải xóa điểm 128, nhưng ở ma trận kết quả điểm đó vẫn còn là sao ạ?

Em cảm ơn thầy :DThầy đã cập nhật slideTrong slide thì nếu G(i,j) >= G1 và G(i,j) >= G2 thì giữ (ij) nếu không thì thì thôiNhư vậy trong ví dụ này điểm 128 mà bạn nói đến sẽ được giữ lại

Thầy Hưng   Em chào thầy.   Thầy giải đáp giúp em phần ý hỏi phụ của 2 thuật toán đối xứng nền và thuật toán tam giác được không ạ?

1. Phân vùng dùng thuật toán đối xứng nền       Dựa vào điều gì trong các bức ảnh đầu vào cho phép thuật toán trả về kết quả đúng nhất?

2. Phân vùng sử dụng thuật toán tam giác        Trong trường hợp nào thì thuật toán này không nên sử dụng?

Mog thầy giáo giúp đỡ ạ. Em cám ơn thầy!1. Với phần vùng trong đối xứng nền bạn muốn tách ít nhất là p% của nền ra khỏi đối tượng, tuy nhiên khi lấy vị trí a bạn lại chỉ có cách là lấy cả đối tượng vào để tính phần trăm, nếu đối tượng tương đối lớn thì cai giá tị p% của bạn sẽ bị sai số rất nhiều gây ảnh hưởng tới ngưỡng cuối cùng (ngưỡng quá sâu vào nền và đối tượng sau khi tách sẽ bị to quá mức)Ngoài ra vì là thuật toán đối xứng nền, nếu đỉnh nền không đối xứng thì kết quả cũng sai nhiều.

Vậy điều quan trọng nhất là đối tượng phải nhỏ hơn nền rất nhiều và nền là một đỉnh tương đối đối xứng

2. Khi đỉnh duy nằm rất gần giữa, nhiều đỉnh, (2 trở lên). Vì thuật toán này dựa vào giản định là chỉ có một đỉnh hiện rõ, còn một đình thì bị đuôi của đỉnh lớn che mất (đối tượng quá nhỏ so với nền)

Page 25: Thac Mac Mon Xu Ly Anh

Thầy HưngEm thưa thầy khi làm với dạng bài tập này thì nhưng phần ở biên, ở các vị trí đó không lấy được phần cửa sổ đê tính.Vậy mình chọn cách tính, trình bày trước khi tính hay xử lý như thế nào?

Nếu trong bài tập không nêu cách giải quyết thì bạn phải nêu và nếu cần giải thích cách xử lý những trường hợp đóTốt nhất là lấy ví dụ cụ thể (lấy luôn các điểm trên bài tập)Sau đó tiến hành trình bày kết quả, thông thường bạn sẽ trình bày đầu tiên là thuật toán chung, rồi đến các cách xử lý trường hợp đặc biệt rồi đến kết quả của phép tính.Thầy HưngVí dụ đầu bài là 1 ma trận A(3,3) với f=90; Em sử dụng khuyêchs tán lỗi 2 chiều Floyd Steinberg Xét phần tử A(1,1) thì không thể khuyêchs tán sang 4 điểm gần nó thì có phải khuyêchs tán lỗi tại điểm đấy hay không.Hay là chỉ so sánh với ngưỡng f.rồi gán là 0 hoặc 255 hay không ạ.Em cám ơn thầy !

Dear bạnBạn gửi câu hỏi rõ hơn, ví dụ đầu bài nào?Thầy Hưng

PS: Tốt nhất là đưa ví dụ cụ thểEm thưa thầy: ví dụ:           35   44    55A=     23   90    202         145 120   254 với f=90.thì em xét điểm A(1,1)= 35 với phương pháp Floyd Steinberg thì nó sẽ khuêch tán sang điểm A(1,2) A(2,2) A(2,1) và A(2,-1) Ta không có điểm A(2,-1) thì có phải khuếch  tán lỗi tại điểm A(1,1) không ạ?Có chứ bạn, khuếch tán lỗi những điểm có thể, còn những điểm không thể thì thôi.Giông như bạn khuếch tán lỗi ra ngoài trong khuếch tán lỗi 1 chiều vậyThầy HưngEm chào thầy ạ!Thầy giải đáp cho em một vài vấn đề sau với ạ :- Câu 3 : em đọc Three-CDD có dùng trong cả máy ảnh, câu hỏi của thầy là chỉ trong máy quay ?- Câu 10 : mô hình cơ bản là như thế nào ạ ?- Trong slide 37 chương 4 phần phép giãn nở, em không hiểu làm thế nào để ra X+B, thầy có thể nói qua không ạ ?Mong thầy trả lời sớm!Em cảm ơn thầy ạ !Dear bạn- Three-CDD có dùng nhưng được dùng rất ít, không phổ biến, tuy nhiện lại phổ biến hơn nhiều trên máy quay tại sao..- Mô hình cơ bản ý thầy là mô hình raster :)- Giãn nở là phép giãn mỗi điểm của X thành B sau đó tổ hợp chúng lại.Với mỗi điểm 1 của X chúng ta giãn nở nó thành một ma trận B, sau đó tổ hợp các điểm này lại (2 điểm 1 vẫn là 1, 0 và 1 thành 1...)

- Co thì ngược lại, với mỗi điểm của X (điểm ở đây là điểm 1 nhé điểm 0 chỉ là nền không thuộc X) ta đặt B sao cho vị trí x trong B trùng với điểm đang xét. Nếu toàn bộ ma trận B nằm trong X (năm trong các điểm 1) thì giữ lại điểm đang xét, nếu không cho bằng 0

Thầy HưngEm chào thầy ạ.Em có một chút thắc mắc về thuật toán đối xứng nền muốn hỏi thầy ạ.Có sự khác nhau giữa slide của thầy và thư trả lời thắc mắc của một bạn về thuật toán như sau.

Page 26: Thac Mac Mon Xu Ly Anh

- theo thư của thầy thì "1. Maxp là giá trị mức xám mà h(maxp) là lớn nhất trên biểu đồ

2. Max ở đây là giá trị mức xám lớn nhất trong bức ảnh. Với trường hợp ảnh có nền là sáng, còn ảnh có nền tối thì phải làm ngược lại

Tính diện tích bằng cách cộng các h(g) trong khoảng lại thôi

Bạn tìm a sao cho đạt kết quả 5% rồi làm tròn a đến giá trị nguyên gần nhất

Diện tích từ min đến max là 100% thì từ a đến max là 5%"-  còn theo slide thì "   Giả sử chúng ta chọn p% là 95% thì chúng ta sẽ tính sao cho diện tích từ a đến max là bằng 5% của điện tích từ maxp đến max" 

vậy em muốn hỏi là Ta sẽ tính diện tích từ a -> max = 5% của maxp-> max(theo slide)hay là a->max = 5% của min->max (theo thư).

Thầy xin lỗi, slide có lỗi đấy.

Bạn tìm diện tích từ min đến max = 100%Bạn tính a sao cho a đến max là 5%Rồi lấy đổi xứng sangThưa thầy theo như mail vừa nãy của thầy :"không có θ(-1)  với m(f.0) bạn tính với θ(0)

mf1 thì tính với gmin=0, gmax = θ(0)mb1 thì tính với gmin=θ(0)+1, gmax = 255

Bạn xem kỹ lại slide đi  θ(k)+1 chứ không phải là θ(k+1)

Thầy Hưng"

m(f,0) và m(f,1) cùng tính với θ(0) => m(f,0) = m(f,1).tương tự m(b,0) = m(b,1) ạCho thầy xin lỗi. nhiều bạn hỏi quá loạn cả lên

Thầy trả lời một lần cho chót nhé

Thuật toán đẳng điệu như sau:

Đầu tiên tính θ(0)Có nhiều cách tính θ(0) như một số bạn hỏi

có thể là giá trị mức xám lớn nhấtcó thể là giá trị mức xám nhỏ nhấtcó thể là giá trị mức xám trung bình

Bạn chọn cái nào cũng được, vì rồi khi thuật toán kết thúc bạn cũng đặt được một kết quả.Tuy nhiên nếu giá trị ban đầu càng gần giá trị tối ưu thì thuật toán của bạn sẽ kết thúc nhanh hơn (ít vòng hơn)

Sau khi tính được θ(0) các bạn tiến hành tính m(b,0) và m(f,0)

Công thức trong slide của thầy hơi sai một chútPhải tính như sau

Page 27: Thac Mac Mon Xu Ly Anh

m(f,k) được tính với Gmin = 0 và Gmax = θ(k)

m(b,k) được tính với Gmin = θ(k)+1và Gmax = 255

nghĩa là với m(b,0) và m(f,0) ta tính bằng θ(0)Sau đó khi tính được m(b,0) và m(f,0) rồi thì ta tính θ(1) bằng công thức trong slide

θ(k+1) = (m(b,k) + m(f,k))/2

tức là 

θ(1) = (m(b,0) + m(f,0))/2

rồi cứ thế tính tiếp các ngưỡng tiếp theo cho đến khí

θ(k)=θ(k+1)

thì dừng lại

Thầy HưngPS: Các bạn sửa trong slide công thức tính m(f,k) và m(b,k) nhé (đổi từ k+1 thành k)1. Em thưa Thầy, khi cho một ảnh I là ma trận sau: 

220 210 240 210240 210 250 210240 230 250 210240 210 240 210

Sử dụng giải thuật nén LZW (Lempel-Ziv-Welch) để  nén ảnh IKhi chạy thuật toán nén ảnh thì phải đọc lần lượt k theo từng hàng ạ? Khi em đọc theo hàng thì thấy có chuỗi w bị lặp lại 210-240-210. Thầy có thể giải đáp cho em không ạ? 2. Trong  chương 4 slide 40, 41 kết quả khi thực hiện phép đóng và phép mở là giống nhau ạ? Em tính ra kết quả phép mở thì đúng còn phép đóng thì ra kết quả khác. Em cảm ơn thầy!Trong LZW bạn phải có cái gọi là chứ cáiVà một từ điền bao gồm các chữ cái gốc này.Ở đây chữ cái của bạn là gì?Kết quả phép đóng và mở là khác nhauChỉ giống nhau trong một số trường hợp đặc biệt thôi.Bạn nên tính kỹ lại điEm chào thầy ạ. Em muốn hỏi một số câu hỏi liên quan đến bài tập: 1) Phần lọc trung bình, trung vị,...Trong slide các điểm không xét thầy vẫn giữ nguyên khi ra kết quả, còn tại sao trong bài tập số 3 những điểm đấy lại bị chuyển thành 0 ạ2) Em xin hỏi về phương pháp tìm biên đơn giản: 2 ma trận ( A⊕B)−( AΘB) là 2 ma trận có kích thước khác nhau thì hình như không trừ được cho nhau thì phải :D.Ngoài ra, em muốn hỏi về phép xấp xỉ biên. Em không hiểu về nó ạ, thầy có thể nói qua về nó được không ạ. Cái X © B là phép chia ma trận phải không thầy :D3) Trong cuốn XLA của đại học từ xa, khi họ tính kích thước đầu ra khi sử dụng thuật toán LZW thì các số 65,66,67 họ lấy độ dài là 8 bits. Còn lại là 9 bits, trong slide thầy ghi là <512 là 9 bits hết. Có mâu thuẫn j trong đây không ạ

Em xin cảm ơn thầy1) Việc làm gì với các điểm biên là chuyên chúng ta phải quyết địnhVới bài tập, điểm biên chúng ta quyết định cho nó bằng 0, với slide thầy vẫn thực hiện phép lọc nhưng chỉ với những điểm có sẵn

Page 28: Thac Mac Mon Xu Ly Anh

2) Bạn nên hiểu là với tìm biên bằng co và giãn thì mã trận ở đây chỉ mang tích chất biểu diễn, cái mà bạn muốn cộng hay trừ là đối tượng thể hiện bằng các số 1 trong ma trận đó.Nếu 2 ma trận không bằng nhau về kích thước thì bạn chỉ việc tăng kích thước lên cho bằng nhau

VD 2 ma trận sau là tương đương trong bài toán co và giãn

1 1  và  1 1 01 1       1 1 0            0 0 0

Nó vẫn thể hiện một đối tượng hình vuông, chúng ta chỉ thêm các điểm nền vào thôi.

3) Ko có mâu thuẫn, bạn phải đọc kỹ slide, nếu với 8 bít bạn chỉ có thể biểu diễn bảng ASCII, nhưng bạn nên nhớ, trong từ điển ban đầu của ta có thêm 2 kỹ tự đặc biệt mã 256 và 257 là CC và EOI, để mã hóa thêm 2 code này thì bạn phải có 9 bít.Như vậy trong giáo trình bạn học họ không mã hóa và sử dụng 2 code này trong tử điển ban đầu.

Thầy HưngThưa thầy, thầy có gợi ý cho chúng em cách trả lời câu hỏi sau được không ạ?

" Sensor Three-CCD là gì? Có sự khác biệt gì giữa lọc Bayer và Three-CCD? Tại sao Three-CCD lại chỉ được sử dụng cho máy quay? "

Em cảm ơn thầy ạ :)Three-CCD là gị bạn nên tự tìm hiểu. Nhưng một điều quan trọng là nó to và đăt hơn senser với 1 CCD và lọc Bayer.Lý do là người ta sử dụng Three-CCD nhiều hơn trên máy quay là do 1 điều rất quan trọng.Với lọc Bayer mỗi điểm ảnh chỉ có một mầu là được đo trực tiếp, các thành phần mầu còn lại đều phải nội suy -> đẫn tới sai số trong trường hợp thiếu sáng (nếu chụp máy ảnh trên nền đen các bạn sẽ thầy lốm đốm nhiễu các mầu ngẫu nhiên, đấy chính là sai số do nội suy). Với máy ảnh giải pháp đơn giản là chụp 1 bức ảnh lâu hơn để lấy đủ ánh sáng -> giảm nhiễu (có thể lấy sáng cả phút nều cầu)Với máy quay bạn không thể chụp các khung hình lâu hơn 1/24 giây vì bạn phải có 24 ảnh một giây để có hình động -> việc nội suy sẽ dẫn tới chất lượng phim kém, nhiều nhiễu. Three-CCD ghi lại 3 kênh mầu riềng rẽ không nội suy -> giải quyết được vấn đề này.trên máy quay và là giải pháp với ratio giá/chất lượng cao hơn 1 sensor và lọc Bayer.

Thầy HưngThầy ơi cho e hỏi :- bước nào trong nén JPEG sẽ làm cho quá trình nén ảnh là không bảo toàn?-Trong trường hợp nào mã hóa loạt dài sẽ tăng kích thước dự liệu được mã hóa?e cảm ơn thầy !

- Trong các bước thì kể cả bước biến đổi Cosin cũng là bảo toàn (với điều kiện là không có sai số trong tinh toán dấu chấm động) tuy nhiên khi lượng tử hóa, thì các giá trị tần số cao sẽ tiến tới không dẫn đến dữ liệu bị mất -> có 1 bước trên lý thuyết là không bảo toàn (lượng tử hóa) và 2 bước trên thực tế là không bảo toàn (biến đổi cosin và lượng tử hóa)

- Mã hóa loạt dài là gì? Là mã hóa những đoạn lặp đi lặp lại của dữ liệu bằng các giá trị đếm, nếu mã hóa các giá trị đếm mà lớn hơn dữ liệu gốc thì là tăng kích thước... ( mã hóa 00000 thành 0x5 mà x5 lại mã hóa thành 1 byte là 8 bít thì như thế là tăng kích thước từ 5 bít thành 9 bít rồi)

Thầy HưngThưa thầy, cho em hỏi một chút ạ. Về bài tập phần khếch tán lỗi 2 chiều dùng Floyd ấy ạ 

Nếu mà để nguyên phân số, thì tính toán rất phức tạp vì số to lắm ạ. 

Page 29: Thac Mac Mon Xu Ly Anh

Bọn em có được làm tròn về số nguyên không ạ ? Em xem một số ví dụ (tiếng anh ) , thì họ có làm tròn, tính toán cũng đỡ phức tạp ạ.

Mà, sau mỗi bước, thì đều chia cho 16, em nghĩ cũng không sai lệch về kết quả lắm ạ? 

Em cảm ơn thầy! 

Bài tập của thầy không quá phức tạp đâu.Các bạn có thể làm tròn nhưng đừng làm tròn thành nguyên.Kết quả sai số một chút cũng không sao (Các bạn nên nói rõ là mình làm tròn đến bao nhiêu chữ số sau dấu phẩy)Thầy HưngEm thưa thầy,trong công thức tính f(g) của tách ngưỡng tự động, m(G-1) tính thế nào ạ?Bạn tính như bình thường với G là số mức xám của ảnh :)Nghĩa là G-1 là mức xám lớn nhất của ảnhVậy thôiThầy Hưng

Em thưa thầy,thầy tính cụ thể giá trị của h(q) trong bài ví dụ chương 3-1 trang 17 giúp chúng em với ạ!h(q) là giá giá trị của biểu đồ tần suất sau khi sử dụng phép biến đổi :)

Bạn tính lần lượt 

f(g)f(1) = 2f(2) = 3f(3) = 3f(4) = 3

vậy h(q) với q=1 là 0 vì không g nào biến thành 1 cảh(q) với q=2 là h(g) với g=1 vì g biến từ 1 thành 2 tức là 4h(q) với q=3 là h(g) với g=2 cộng h(g) với g=3 cộng h(g) với g=4 vì g biến từ 2,3,4 thành 3 tức là 2+1+2=5h(q) với q=4 là 0 vì không g nào biến thành 4 cả

Vậy thôi,

Thầy HưngThưa thầy về thuật toán đối xứng nền em hỏi ngu một số vấn đề sau :( :1/ Maxp là giá trị lớn nhất trên biểu đồ tần suất đúng hay sai?2/ Xác định điểm a tm diện tích a-> max là 5%, vậy max ở đây là gì? cách tính diện tích như thế nào? và có làm tròn diện tích gần 5% nhất ko? vì giá trị a thuộc 0-255, như vậy maxp->a là 95% đúng ko?

Em xin cảm ơn và hậu tạ :)1. Maxp là giá trị mức xám mà h(maxp) là lớn nhất trên biểu đồ

2. Max ở đây là giá trị mức xám lớn nhất trong bức ảnh. Với trường hợp ảnh có nền là sáng, còn ảnh có nền tối thì phải làm ngược lại

Tính diện tích bằng cách cộng các h(g) trong khoảng lại thôi

Bạn tìm a sao cho đạt kết quả 5% rồi làm tròn a đến giá trị nguyên gần nhất

Diện tích từ min đến max là 100% thì từ a đến max là 5%

Page 30: Thac Mac Mon Xu Ly Anh

Thầy HưngEm thưa thầy,trong công thức tính f(g) của tách ngưỡng tự động, m(G-1) tính thế nào ạ?Bạn tính như bình thường với G là số mức xám của ảnh :)Nghĩa là G-1 là mức xám lớn nhất của ảnhVậy thôiThầy Hưng

Đề cương ôn tập môn xử lý ảnh

Danh sách các phần sẽ có câu hỏi:Tất cả các chương trừ các phần sau:

Ch02: o Mộ số định dạng cơ bản

Ch03-1: o Bó cụm,

Ch03-3:o Chi tiết các bộ lọc đảo,

o Giả đào(Mô hình nhiễu vẫn kiểm tra)

Ch04: o Lọc trung bình cục bộ,

o Dò biên theo quy hoạch động

Ch05: o Phân vùng dựa theo đường biên,

o Phân vùng theo kết cấu bề mặt

Ch06: o Thuật toán khoảng cách lớn nhất,

o ISODATA,

o Nhận dạng dựa theo cấu trúc,

Ch07: o Phân khối,

o Lloyd - Max,

o Phương pháp kim tự tháp,

o Mã hóa fractal

Page 31: Thac Mac Mon Xu Ly Anh

Câu hỏi mẫu:

Câu hỏi lý thuyết (mỗi đề có 2 câu, mỗi câu 1.5 điểm) (ở đây có 5 ví dụ)1. Bức ảnh mầu đầu tiên được chụp như thế nào chỉ với phim đen trắng? Và làm thế

nào để xem lại ảnh?2. Phối mầu cộng là gì? Phối mầu trừ là gì? Trong trường hợp nào thì sử dụng phối

mầu cộng, trong trường hợp nào thì sử dụng phối mầu trừ?3. Mô hình lưu trữ vector là gì? Mô hình vector khác mô hình cơ bản ở điểm nào? Nếu

ảnh vector có nhiều ưu điểm tại sao không sử dụng vector mà vẫn phải sử dụng ảnh raster?

4. Cân bằng tần suất là gì? Tại sao phải cân bằng tần suất?5. Biên là gì? Nhiễu là gi? Làm thế nào để phân biệt biên và nhiễu?

Câu hỏi bài tập nhỏ (mỗi đề có 1 câu 3 điểm) (ở đây có 2 ví dụ)

1.Tính biểu đồ tần suất h(g) cho bức ảnh I sau:

I=[1 2 1 3 2 14 4 3 2 4 06 9 2 3 2 16 2 4 5 3 03 4 4 5 1 55 6 8 9 3 6

]Nếu một bức ảnh A có biểu đồ tần suất ha(g) như sau

ha(g)= 0 1 2 3 5 74 5 2 4 1 4

Và ha'(g) là biểu đồ tần suất của ảnh A' biển đổi từ ảnh A bằng hàm f(g) sau. Hãy tính ha'(g).

f ( g )=|g−4|

2.Thực hiện cân bằng tần suất cho ảnh I,được biết ảnh gốc và ảnh kết quả cùng là ảnh 6 cấp xám.

I=[3 1 4 4 2 33 2 2 5 5 11 2 3 1 5 14 1 0 2 4 43 4 0 5 0 12 1 3 2 1 3

]

Page 32: Thac Mac Mon Xu Ly Anh
Page 33: Thac Mac Mon Xu Ly Anh

Câu hỏi bài tập lớn (mỗi đề có 1 câu 4 điểm) (ở đây có 2 ví dụ)

1.Cho ảnh I như sau:

I=[2 4 4 5 4 5 22 4 5 4 5 4 22 3 13 15 15 14 23 3 13 12 16 2 34 4 12 15 13 2 34 4 2 3 2 4 33 3 2 3 4 4 4

]Thực hiện nhân chập ảnh I với các ma trận Hx và Hy rồi cộng với nhau để được ảnh I1

H x=[−1 0 1−2 0 2−1 0 1] và H y=[−1 −2 −1

0 0 01 2 1 ]

Thực hiện nhân chập ảnh I ở trên với H dưới đây để được I2

H x=[−1 −1 −1−1 8 −1−1 −1 −1]

Kỹ thuật đạo hàm bậc một và bậc hai trong tìm biên có gì khác nhau?

Ảnh I1 và I2 ở trên đã là biên chưa?

Cần phải làm thêm những gì để có ảnh biên? (nên sử dụng kết quả trên để minh họa)

Lưu ý nhân chập sử dụng tâm ở giữa và để cho đơn giản không cần xoay ma trận.

2.Thực hiện phép nhân chập ảnh I với ma trận nhân chập W sau. Sử dụng công thưc nhân chập với tâm nhân chập ở giữa và có tiến hành quay ma trận nhân chập 180 độ. Lưu ý là loại bỏ điểm ở biên ảnh khi nhân chập nếu không đủ dự liệu đầu vào cho ma trận nhân chập.

I=[3 3 2 4 4 32 2 3 2 3 21 1 4 3 5 14 3 1 1 2 11 2 4 4 4 24 1 12 3 3 3

] và W =[0 1 10 1 00 1 1 ]

Tại sao chúng ta lại phải quay ma trận nhân chập 180 độ?

Có những công thức nhân chập khác không?

Page 34: Thac Mac Mon Xu Ly Anh

Có những cách nào để xử lý những điểm ở biên?

BÀI T P NHÓM PH N 3Ậ ẦTrong phần ba này các bạn sẽ làm quen với việc thiết lập và tạo các hàm có trách nhiệm thực hiện các phép biến đổi sử dụng toán tử không gian.

Trong tất cả các bài tập ảnh a là ảnh có 256 mức xám. Giá trị max và min của các điểm ảnh là 0 và 255.

Nhân ch pậViết hàm convolution sao cho nếu:

b = convolution(a,c)

với a là ma trận thể hiện ảnh đầu vào c là ma trận nhân chập

thì b là ảnh kết quả của phép nhân chập của a và c, với điều kiện là tâm của ma trận nhân chập là ở góc trên bên trái trong trường hợp ma trận c có kích thước chẵn. Phần không tính được cho bằng 0.

Ví dụ: ảnh a

a = [34 56 234 24 129123 32 254 12 24393 55 33 34 2

170 156 220 234 85 253 0 12 111

]với c =[ 0 −1 0

−1 4 −10 −1 0 ] (tâm ở số 4)

thì b =[0 0 0 0 00 −360 705 −507 00 −94 −431 −145 00 −74 457 662 00 0 0 0 0

] với c =[1 0

0 −1] (tâm ở số 1)

Page 35: Thac Mac Mon Xu Ly Anh

thì b =[−2 198 −222 219 0−68 1 −220 −10 063 165 201 −26 083 −156 −208 −123 00 0 0 0 0

] nếu c= [ 0 −1 −1 0

−1 1 2 −1−1 3 4 −10 −1 −1 0

] (tâm ở số 1)

thì b= [0 0 0 0 00 105 108 0 00 −219 409 0 00 0 0 0 00 0 0 0 0

]L c trung vọ ịViết hàm medianfilter sao cho nếu:

b = medianfilter(a,h,w,f)

với a là ma trận thể hiện ảnh đầu vào h là chiều cao của cửa sổ w là chiều rộng của cửa sổ f là ngưỡng

thì b là ảnh sau khi lọc trung vị của ảnh a, với điều kiện là tâm của cửa sổ là ở góc trên bên trái trong trường hợp cửa sổ c có kích thước chẵn.

Ngoài ra trung vị ở đây sẽ là số có giá trị nhỏ hơn trong 2 số nằm giữa trong trường hợp số điểm ảnh trong cửa sổ là số chẵn.

Ví dụ: ảnh a

a = [34 56 234 24 129123 32 254 12 24393 55 33 34 2

170 156 220 234 85 253 0 12 111

]với h = w = 3 và f = 127

Page 36: Thac Mac Mon Xu Ly Anh

thì b =[0 0 0 0 00 32 34 12 00 55 33 34 00 156 55 33 00 0 0 0 0

]

Page 37: Thac Mac Mon Xu Ly Anh

L c trung bình ọViết hàm meanfilter sao cho nếu:

b = meanfilter(a,h,w,f)

với a là ma trận thể hiện ảnh đầu vào h là chiều cao của cửa sổ w là chiều rộng của cửa sổ f là ngưỡng

thì b là ảnh sau khi lọc trung bình của ảnh a, với điều kiện là tâm của cửa sổ là ở góc trên bên trái trong trường hợp cửa sổ c có kích thước chẵn. Giá trị trung bình sẽ được làm tròn đến giá trị nguyên gần nhất

Ví dụ: ảnh a

a = [34 56 234 24 129123 32 254 12 24393 55 33 34 2

170 156 220 234 85 253 0 12 111

]với h = w = 3 và f = 127

thì b =[0 0 0 0 00 32 82 12 00 55 33 34 00 156 220 73 00 0 0 0 0

] với h = w = 2 và f = 50

thì b =[34 144 131 102 0123 94 83 73 093 116 130 34 0

170 156 117 91 00 0 0 0 0

] trong cái file hướng dẫn Baitap3.docx tính nhân chập,- kết quả đầu ra ma trận b thứ nhất phải là 457 ( chứ không phải là -457 )- kết quả đầu ra ma trận b thứ hai phải là đảo ngược dấu lại toàn bộ- kết quả đầu ra ma trận b thứ ba phải là   0       0          0      0     0     0     0        chứ không phải là     0       0          0      0     0     0     0  0     -91    -531     0     0     0     0 0     105     108     0     0     0     00     399    1198    0     0     0     0 0    -219     409    0     0     0     00       0          0      0     0     0     0  0       0          0      0     0     0     00       0          0      0     0     0     0  0       0          0      0     0     0     0

Page 38: Thac Mac Mon Xu Ly Anh

Thầy thử test lại xem em có nhầm không ạ ??? em bấm máy tính thử mấy cái thì thấy kết quả của em mới đúng cơ thầy ạ !Dear bạnLưu ý là trong nhân chập chúng ta quay ma trận 180 độ rồi mới nhân nhéXem lại slide nhân chập.Kiểm tra lại hộ thầy trước nếu bạn chưa xoay.

Em thưa thầy trong slide có nói+ Ma trận đối xứng là ma trận không thay đổi khi quay 180 độ+ Thường các ma trận nhân chập là đối xứng=> Vậy thì khi xoay thì kết quả vẫn thế ạ!Đúng rồi,Nhưng ví dụ của thầy có đối xứng đâu ;)Duy có ví dụ đầu là đối xứng thôi.Lý do tại sao người ta chọn ma trận đối xứng là để cho dễ, nhưng ở đây chúng ta có đảm bảo là đầu vào của nhân chập là đối xứng đâuThầy HưngEm đã xoay 180 đọ và kiểm chứng lại kết quả;kết quả ma trận đầu của thầy, giá trị ( -457 ) phải là ( 457 ) kết quả ma trận thứ 2 của thầy , giá trị ( 10 ) phải là ( -10 )kết quả ma trận thứ 3 thì đúng rùi.Còn lại các giá trị khác đều đúng cả.Sự trùng hợp ngẫu nhiên hay nhầm lẫn chỗ nào, có ai làm ra kết quả giống / khác thầy thì cho ý kiến cái.vì bài nhân chập này liên quan trực tiếp đến kết quả của bài Canny.SOrry Spam !

Thưa thầy cho em hỏi 1 chút, trong slide chương 5 của thầy có đoạn                         mf,k+1 được tính với Gmin = 0 và Gmax = θk                mb,k+1 được tính với Gmin = θk+1và Gmax = 255

                 và θ(k+1)= (m(f,k)+m(b,k))/2

Như vậy θ(1)=(m(f,0)+m(b,0))

           Thầy cho em hỏi là m(f,0) và m(b,0) được tính như nào ạ vì theo slide của thầy thì                       m(f,0) sẽ được tính với Gmin=0 và Gmax=θ(0-1)=θ(-1);                       m(b,0) sẽ được tính với Gmin=θ(-1)+1 và Gmax=255.                       và giá trị θ(-1) không tồn tại.Em cảm ơn thầy.Công thức ở ngay phỉa trên ýNgày phỉa trên đoạn

m(f,0) sẽ được tính với Gmin=0 và Gmax=θ(0-1)=θ(-1); m(b,0) sẽ được tính với Gmin=θ(-1)+1 và Gmax=255.Thầy cho em hỏi trong bước 5 của thầy khi xét ngưỡng thấp thì chỉ xét những điểm vuông góc với gradient vậy chỉ được tối đa 2 điểm, vậy nếu sau bước 4 mà xung quanh điểm này có hơn 2 điểm thì làm sao loại hết về ảnh chỉ còn 2 loại mức xám là 255 và 0 ạ!

Bạn xét 2 điểm lân cận rồi dùng đệ quy xét tiếp chứ :)Lần theo biên mà.Chứ dừng lại thì nói làm gì :)Tốt nhất tại bước 5 bạn vẽ trên một ma trận mới toàn 0.Như vậy khi vẽ xong bạn sẽ có được biên là 255 còn nền là 0 ;)

Page 39: Thac Mac Mon Xu Ly Anh

Thầy Hưngý thầy là tại những điểm xung quanh điểm đang xét mà không thuộc hướng vuông góc với gradient thì cho về 0 hết ạ!

Thế này cho đơn giản nhé.Bạn bắt đầu bằng một tờ giầy trắng (tất cả các điểm =0)Sau đo vẽ lên đó các điểm là biên với giá trị 255Như vậy nếu điểm nào không được xét sẽ có giá trị 0điểm biên sẽ có giá trị 255.Vậy thôiThưa thầy cho em hỏi:1. khi nhân chập xong ta sẽ được 1 ma trận ảnh mới. Vậy những điểm ảnh <0 hoặc >255 có được thay bằng 0 hoặc 255 ko ạ. 2. Trong  ma trận hướng của thầy :        5   6   7        4   +   0        3   2   1 em thấy số 1 tương ứng với góc -45 độ nhưng khi em tính ra:ma trận agy:     0     0     0      0      0       0     0     0     0   128   128   128     0     0     0     0   128   128   128     0     0     0     0     0      0      0       0     0     0     0  -128  -128  -128     0     0     0     0  -128  -128  -128     0     0     0     0     0      0      0       0     0ma trận agx:     0     0      0     0     0      0     0     0     0      0     0     0      0     0     0   128   128   0  -128  -128   0     0   128   128   0  -128  -128   0     0   128   128   0  -128  -128   0     0     0      0     0     0      0     0     0     0      0     0     0      0     0em thấy điểm (3,3) có hướng là arctan(128/128) = 45 độ nhưng thầy lại viết ở đó là 1. Theo em nghĩ thì nó phải bằng 3 ạ

Lưu ý cho thầy một điều nhé.Arctan chỉ tính được góc trong khoảng 180 độ thôi.Nếu muốn tính trong khoảng 360 độ các bạn phải check điều kiện với gxNếu gx lớn hơn 0 thì thôi còn nhỏ hơn 0 thì cộng thêm vào góc 180 độSau đó trừ đi 360 độ nếu góc lớn hơn 360 để đưa nó về trong khoảng 0-360 độBạn để ý cái ma trận hướng, hướng 1 là từ dấu x đến số 1 nhé chứ không phải ngược lại đâu.Thầy HưngEm chào thầyphần em hỏi lúc trước thầy không cần trả lời e nữa đâu ạ, em đã hiểu vì sao rồi.OK tốt rồi. Lưu ý kiểm tra thật kỹ trước khi hỏiTốt nhất là đặt break point debug đi đã nhé ;)Thầy HưngThưa thầy có trường hợp test mà ngưỡng cao thấp hơn ngưỡng thấp được không ạ.

Dear bạnTheo bạn nếu code đúng thì nếu ngưỡng cao thấp hơn ngưỡng thấp thì điều gì xảy ra?Và có nên để ngưỡng cao thấp hơn ngưỡng thấp không?Thầy Hưng

Page 40: Thac Mac Mon Xu Ly Anh

PS: Là một kiểm chứng các bạn có thể nghiên cứu đây ;)e chào thầy! Thầy có thể nói qua lại cho e về cửa sổ di chuyển k ạ? Em đọc trong slide nhưng vẫn chưa hiểuCám ơn thầy!Cửa sổ dinh chuyển là vùng lân cận của điểm ảnh đang xét.Khi bạn thực hiện các phép toán cửa sổ di chuyển thì bao giờ bạn cũng lấy tập hợp điểm lân cận điểm đang xét và nằm trong cái vùng của cửa sổ di chuyển này.Bạn có thể sử dụng cửa sổ di chuyển theo mấy cách, tùy theo tâm của cửa sổ của bạn ở đâu.Trong các ví dụ thầy đều muốn tâm là ở giữa nếu kích thước cửa sổ là lẻ hoặc góc trái trên trong số 4 điểm giữa nếu kích thước cửa sổ là chẵn.Thầy HưngPS: Bạn nên hỏi cụ thể bạn chưa hiểu cái gì về cửa sổ di chuyển chứ bảo thầy nói thêm thế này chả có tác dụng gì đâu.Thưa thầy em có thắc mắc về cannyKhi so sánh g vs g1,g2ở bước 4 là nếu hướng=0 thì so sánh với số trái và phảibước 5 thì so sánh với số bên trên với bên dưới có đúng ko ạvà ở vd cuối cùng của canny em tính ra kết quả khác     0     0       0       0       0       0         0     0     0       255   0       0        255     0     0     255    255   0       255    255     0     0     0       255   255    255    255     0     0     0       255   255    255    0         0     0     0       0       255    0       0         0     0     0       0       0       0       0          0Dear bạn

Bạn phải so sánh theo hướng của gradient, không phải lúc nào cũng là trái phải trên dưới, cái này chỉ đúng nếu góc gradient tại điểm đó là 0 thôi, với các góc khác, hướng so sánh sẽ thây đổi tương ứng.

Bước 4 là so sánh theo hướng gradient

Bước 5 phần 2 là sét các điểm theo hướng vuông góc với gradient

Thầy HưngThưa thầy!Trong kỹ thuật canny, khi tính toán ma trận độ lớn của đạo hàm sẽ xuất hiện các điểm có mức xám lớn hơn 255 (do tính căn của tổng bình phương).Em muốn hỏi là, với những điểm như vậy có cần làm tròn về giá trị mức xám 255 hay không vì nó có thể ảnh hưởng đến việc xác định điểm đó có thểlà biên hay khôngKhông bạn ạMa trận độ lớn giữ nguyên, bạn sử dụng ma trận độ lớn gradient và ma trận góc gradient để xét tìm biên thôi.Tuy nhiên khi bạn chọn biên và nền thì bạn sẽ set điểm biên giá trị là 255 và điểm nền là 0 vậy nên không cần can thiệp vào các ma trận gradient.

Thầy HưngEm chào thầy!Thầy cho em hỏi một số vấn đề sau ạ

1. Trong thuật toán đẳng liệu,đầu vào là 1 histogram.nhưng để tìm được ngưỡng T thì phải tính được trung bình mẫu những điểm ảnh của đối tượng và nền.Em không biết cách tính,thầy chỉ giúp em được không ạ?

2. Với Hmax  là điểm có Histogram lớn nhất ,làm thể nào để ánh xạ tìm ra giá trị độ sáng tương ứng với nó ạ???

Em cảm ơn thầy!Có công thức trong slides.

Page 41: Thac Mac Mon Xu Ly Anh

Bạn áp dụng công thức đó.Trong công thức g là mức xám, h(g) là giá trị histogram tại điểm g

Hmax có histogram lớn nhất, hàm histogram của bạn là danh sách cặp 2 giá trị, một là g và 2 là h(g), bạn tìm max của h(g) rồi xem index của nó là gì để lấy g thôi.

Thầy Hưng

thưa thầy trong hàm main làm thế nào để in ảnh ra to hơn ạ, bọn em làm canny cần chụp ảnh kết quả mà hình nhỏ quá rất khó chụp hết.

Hỏi anh Google.Thầy HưngPS: Có thể save ảnh kết quả ra file, để soi thoải mái dùng imsave thì phải

Thầy cho em hỏi, trong ví dụ 2 của thầy nếu ngưỡng cao ht = 150, ngưỡng thấp là 129 ma trận sau khi so sánh với ngưỡng cao để tìm những điểm chắc chắn là biên em tìm là :     0       0        0       0     0      0     0     0       0        0   128      0     0     0     0       0    255   128   255     0     0     0   128    128       0   128  128     0     0       0    255   128   255     0     0     0       0       0   128       0     0     0     0       0       0      0       0     0     0

ma trận hướng là:

     NaN    NaN    NaN    NaN    NaN    NaN      NaN     NaN    NaN        2        2         2    NaN       NaN     NaN         0        1        2         3        4       NaN     NaN         0        0     NaN        4       4       NaN     NaN         0        7        6         5        4       NaN     NaN    NaN        6        6         6    NaN       NaN     NaN    NaN    NaN    NaN    NaN    NaN      NaN

ma trận sau khi dò biên là:(dò ở những điểm 255 với hướng vuông góc gradient ở ma trận trên)

     0       0        0       0       0      0     0     0       0        0       0       0      0     0     0       0    255   128     255     0     0     0       0    128       0    128     0      0     0       0    255   128     255     0      0     0       0       0       0       0       0     0     0       0       0      0        0      0      0

vậy em tìm được còn sót lại những điểm 128 ở giữa, mà thuật toán ko xét được nữa, mà trong ví dụ của thầy đã loại đi những điểm này, thầy cho em hỏi tại sao lại như thếNgưỡng thấp của bạn là 129 vì thế không điểm 128 nào có thể đạt yêu cầu.Ở đây điểm chắc chắn là biên của bạn là các điểm 181, nghĩa là chỉ 4 điểm ở hình vuông mà bạn set là 255 thôi, còn các điểm 128 không phải điểm chắc chắn là biên bạn phải loại đi. Đến lúc bạn dò theo biên, thì mới dùng ngưỡng thấp để dò.

Thầy đoán là ở đây có thể bạn set không đúng nên thuật toán dò biên của bạn mới xét các điêm bên ngoài, những do các điểm 128 còn lại của bạn không thuộc đường biên nào nối với điểm chắc chắn là biên nên không được xét nên cũng không được set thành 0.

Thầy Hưng

Thầy ơi, cho em hỏi, ngưỡng thấp trong canny đc sử dụng như thế nào ạ?

Page 42: Thac Mac Mon Xu Ly Anh

Trong slide thầy ghi ở bước 5 dùng ngưỡng thấp để dò các biên.Như vậy ở bước 4 chỉ cần dùng ngưỡng cao thôi phải ko ạ?Ngưỡng thấp và cao đều dùng trong bước 5.Bước 4 không dùng ngưỡng nào. Bước 4 là loại các điểm không phải là local maxima (so sánh với 2 điểm lân cận theo hướng gradient)

Bước 5 bao gồm 2 phần nhỏ.

Đầu tiên lọc trong số những điểm còn lại của bước 4 xem điểm nào lớn hơn hoặc bằng ngưỡng cao. Nếu đạt được điều này thì điểm sẽ chắc chắn là biên.

Sau đó từ những điểm chắc chắn là biên này chúng ta tiến hành lần theo biên. Cứ kiểm tra 2 điểm lân cận (theo hướng vuông góc với gradient) của điểm chắc chắn là biên này, nếu điểm nào lớn hơn hoặc bằng ngưỡng thấp thì chúng ta xét tiếp điểm đo, nếu không thì dừng lại (làm kiểu đệ quy, cứ xét từng điểm một, dần dần dò theo biên)

Làm thế cho đến khi xét hết các điểm chắc chắn là biên thì dừng lại. 

Lưu ý khi xét 2 điểm lân cận ở bước này thì chỉ xét điểm nào đã qua được bước 4 nhé.Em có 1 vấn đề muốn hỏi thầy là vì sao trong slide về lọc trung vị các biên của thầy không bị thay đổi còn trong ví dụ các biên lại về 0 hết ạ!

Việc này thầy đã giảng rồi những có lẽ các bạn không nghe.

Với việc xử lý ảnh với phép cuộn hay cửa sổ di chuyển chúng ta có 3 lựa chọn cho những điểm ở mép.1. Bỏ đi (loại khỏi ảnh hoặc cho bằng 0)2. Vẫn tính toán những ma trận chỉ có kích thước tương ứng với phần còn lại bỏ phần chờm ra ngoài3. Vần tính toán nhưng những điểm nằm ngoài ảnh cho bằng 0

Vậy trong slide thầy ko lọai các điểm rìa, giờ thầy ra bài tập cho các bạn thì thầy yêu cầu các bạn loại những điểm này đi cho đơn giản vì no tương ứng với lựa chọn trong bài tập nhân chập.Các bạn nên làm quen với việc phải chọn 1 trong ba cách, chọn cách nào có thể đề sẽ nêu, còn nếu không nêu thì các bạn phải nêu trong bài làm

Thầy HưngChào thầy,Thầy cho em hỏi ở bước 5.thì có phải là nếu hl > G(i,j)  >= ht thì ta thực hiện so sánh vuông góc với gradient hướng nếu giá trị đó lớn nhất so với 2 giá trị bên cạnh thì ta giữ lại có phải không ạ?Em làm thì 3 trường hợp trên đều ra đúng với đáp án của thầy. còn trường hợp cuối thì hơi khác.Gradient tại vị trí (2,2)  = 181.02, (1,2) = 0, và tại vị trí (2,1) = 0. và góc tính được là -135 độ. Tại bước 4 khi so sánh cùng hướng thì giá trị (2,2) là cực trị nên ta giữ lại. Nhưng chỉ có điều 2 điểm (1,2) và (2,1) lại là viền. của ma trận. Vậy có phải là khi xét 1 điểm mà có điểm kề với nó là viền của ma trận thì ta bỏ đi đúng không ạ.Cảm ơn thầy.Không bạn ạ việc so sánh xem thằng ở giữa là lớn nhất được thực hiện ở bước 4 và là dọc theo hướng của Gradient cơ.Sau khi thực hiện bước 4 bạn sẽ có một loạt các điểm ảnh có thể là biên

Tại bước năm với những điểm có thể là biên đó thì bạn sẽ dùng ngưỡng cao là ht để lọc raNghĩa là chỉ chọn lại những điểm G(i,j) >= ht (Những điểm này chắc chắn là biên)Sau đó thì xuất phát tại những điểm này chúng ta sẽ tiến hành dò biên.Bạn kiểm tra 2 điểm bên cạnh điểm đang xét theo hướng vuông góc với gradient.Nếu điểm nào lớn hơn hl thì chúng ta tiếp tục xét điểm đó, nếu không thì dừng lạiLưu ý là chỉ xét điểm mà bước 4 đã chọn nhéThầy HưngPS: Bạn kiểm tra lại hướng dẫn bài 4 thầy vừa cập nhật trưa này đi Giờ còn 3 trường hợp thôiThưa thầy cho em hỏi, nếu hướng tại điểm (i,j) = 7 thì bước sau sẽ so sánh (i,j) với hai điểm (i+1, j+1) và (i-1, j-1) hay (i+1, j-1) và (i-1, j+1) vì em vẫn chưa hiểu cái gọi là lân cận theo hướng biên :)

Page 43: Thac Mac Mon Xu Ly Anh

Em cảm ơn thầy :Nếu bạn đang hỏi bước 4 thì chúng ta phải so sánh theo hướng gradientTức là nếu hướng gradient là 0 ( hướng sang bên phải) thì ta phải so sánh G(i,j) với G(i+1,j) và G(i-1,j)

Còn nếu trong bước 5 thì bạn phải xét 2 điểm theo hướng vuông góc với gradientTức là nếu hướng gradient là 0 (hướng sang bên phải) thì ta phải xét 2 điểm G(i,j-1) và G(i,j+1) nếu G là điểm đã được xác định là biên

Thầy HưngEm chào thầy,thầy giải đáp giúp em một số thắc mắc :

1,Về bài Lọc trung vị .Khi mình tìm được " trung vị"  rồi thì sẽ so sánh nó với tất cả các phần tử trong ma trận con(ví dụ là 3x3) hay chỉ so sánh với tâm của ma trận con(3X3) thôi ạ .

2.Bài cân bằng tần suất thì no_level là có sẵn hay phải tính ạ .

3.Về cửa sổ khung nếu là chẵn thì tâm sẽ ở đâu ạ vì em thấy c[1 0 ;-1 0] thì tâm là 1(vị trí c(1,1)) còn c[ 0 -1 -1 0 ;-1 1 2 -1;-1  3 4 -1; 0 -1 -1 0] thì tâm lại là 1(vị trí c(2,2)).

Mong thầy giải đáp thắc mắc giúp em.Em cảm ơn !!!1. Khi bạn lọc trung vị, bạn chỉ xét tâm của cửa sổ 3x3 thôi.Nghĩa là bạn sẽ tìm trung vị của 9 điểm trong cửa sổ 3x3 đó. Nếu trung vị cách giá trị tại tâm hơn một ngưỡng Phi thì bạn đổi giá trị đó với trung vị, nếu không thì giữ nguyên. Lưu ý là chúng ta áp dụng việc biến đổi giá trị ra một ma trận mới, không thay đổi ma trận gốc như là khếch tán lỗi đâu.

2. Cái này thầy trả lời nhiều rồi, các bạn cố gắng theo dõi các email trả lời của thầy. Cân bằng tần suất thì no_level là số mức xám của ảnh đầu ra, bạn chỉ cân bằng thôi chức có giảm hay tăng mức xám đâu, nên đặt no_level là 256

3. Nếu cửa sổ chẵn thì bạn thấy là tâm ở vị trí trên và bên trái trong số 4 vị trí khả thi.Cửa sổ 2x2 thì có 4 vị trí khả thi đều có thể là tâm thì tâm là vị trí bên trái phía trênCửa số 4x4 có 4 vị trí khả thí ở giữa (2,2),(2,3),(3,2),(3,3) thì tâm cũng vẫn là vị trí bên trái phía trên là (2,2)Cửa sổ 6x6 cũng vậy có 4 vị trí khả thi ở giữa (3,3)(3,4)(4,3)(4,4) thì tâm vẫn ở vị trí bên trái phía trên là (3,3)

Thầy Hưngkhông phải thầy ạ, ý em là cái bước 4 phải là xét 2 điểm lân cận theo hướng gradient, nếu xét theo biên thì 2 điểm (4,5) (5,4) ở ví dụ 3 sẽ bị xóa mất.Cách dùng ngưỡng cao và ngưỡng thấp ở bước 5 em dùng đúng như hướng dẫn của thầy.

Bước 4 bạn xét 2 điểm theo hướng GradientHôm nọ thầy có nhầm một chút khi trả lời các bạn là bước 4 phải xét theo hướng biên.Nếu xét theo hướng gradient mới đúng.Thầy có đính chính lại bài tập sáng này rồi đấy.Bạn check lại nhé.Thầy Hưng

Cái ví dụ thứ 3 của canny, ở bước 4 thì 2 điểm (4,5) (5,4) đã bằng 0 rồi ạBước 5: so với ngưỡng cao thì tất cả các điểm còn lại đều là biên. Vậy thì cái kết quả sau lại vẫn còn 2 điểm (4,5) (5,4) ạ

Bước 5 được chia làm hai bước nhỏBước đầu lọc ngưỡng caoSau đó từ những điểm lọc từ ngưỡng cao các bạn đi theo biên với ngưỡng thấp để tìm các điểm biên còn lại.Cho thầy hỏi, bạn dùng ngưỡng cao và ngưỡng thấp là gì?Thầy HưngHi thầy!

Page 44: Thac Mac Mon Xu Ly Anh

Em xin hỏi thầy một số vấn đề sau:1. Với bài kỹ thuật canny em có thể tự quy ước hướng được không ạ? vì em thấy chỉ có 4 hướng mà thầy trong đề bài thầy lại quy ước từ 1-8. Hoặc là em để nguyên giá trị góc tính toán được và làm tròn về 0 , 45, 90 và -45 được không ạ? và nhìn vào đó là biết hướng rồi không cần phải đưa về các số nguyên từ 1-8 nữa!2. Ma trận hướng em tìm được như sau:

thì hướng mình tìm được là hướng của đường biên phải không ạ? VD:  45 độ ở ô (3,3) thì hướng đường biên là hướng 45 độ chếch sang bên phải đúng không ạ? vậy ở bước sau mình sẽ so sánh giá trị tại ô (3,3) với giá trị tại ô (1,1) và (4,4) hay (4, 2) và (2, 4) ạ? Em cảm ơn thầy! :)Thầy đã giải thích trong các email trước, thực ra các bạn chỉ cần 4 hướng thôi không cần 8 phương.Tuy nhiên nếu cần bạn có thể thực hiện được điều này bằng cách kiểm tra giá trị gxBạn để ý thấy là các giá trị góc tính bằng arctan thì với gx >0 thì góc tính là đúng, tuy nhiên nếu với gx <0 thì các bạn sẽ có vấn đề là góc bị thiếu 180 độ (do arctan chỉ tính trong khoảng 180 độ)Để giải quyết vấn đề này bạn chỉ việc check nếu gx <0 thì cộng thêm vào góc kết quả 180 độ và trừ đi 360 nếu quá 360 độ.Rồi chuyển từ 0-360 -> 0-8Thế là xong

Thầy Hưng

PS: Bạn có thể tham khảo đoạn code sau

%calculate the angle and round it to 0-7% 5 6 7% 4 * 0% 3 2 1aga = round(atan(agy./agx)/pi*4+8);aga(agx<0)=aga(agx<0)+4;aga = mod(aga,8);Thầy ơi em có thắc mắc 1 số vấn đề sau:1.  ở slide CH04 trang 19, tại sao H = 1/115 []....Nếu số 115 là tổng của các phần tử trong ma trận gaussan thì đó phải là 159 thầy ạ?2. ma trận nhân chập này ta có thể sử dụng cả 3 kiểu cửa số hay chỉ chọn kiểu cửa sổ cho phần tử chính giữa?3. các phần tử khi không tính được (ở gần lề của ảnh) thì ta gán giá trị =0 hay để nguyên giá trị (vì trong hàm convolution thầy hướng dẫn để =0 nên em hỏi lại vì muốn sử dụng lại hàm đó)Em cảm ơn thầy!1. Đúng rồi, phải là 159. Gaussian là ma trận có trách nhiệm làm giảm tương phản nhưng không tăng hay giảm độ sáng của ảnh nên về nguên tắc tất tổng ma trận phải là 1

2.Nhân chập nên sử dụng cửa sổ ở giữa, nó đơn giản và dễ tưởng tượng nhất

3.Nếu là hàm liên quan đến cửa sổ di chuyển hay phép cuộn thì ta để phần tử ở rìa bằng 0, bạn làm thế cho dễ :)

Thầy HưngPS: thầy gửi bản đính chính ch04 :)

Thầy cho em hỏi trong phần kỹ thuật Canny:Trong slide của thầy ở bước 3 phần tìm hướng tại mỗi điểm em thấy ghi là: arctan(Gy/Gx).Nhưng phân lớn tài liệu em đọc được ở trên mạng (VD như tài liệu này ) thì lại ghi là: tan^-1(Gy/Gx) (tan mũ trừ 1).Vậy thầy cho em hỏi tại sao lại có 2 cách khác nhau này ạ!Em cảm ơn thầy! :)Trong số học f(x) = y như vậy f^-1(y)=xĐây là cách ám chỉ hàm ngược thôi chứ 1/f(y) = x làm sao được

Page 45: Thac Mac Mon Xu Ly Anh

Ở đây thì arctan chính là tan^-1 vì arctan là hàm ngược của tan màThầy HưngEm chào thầy.Em muốn hỏi thầy về thuật toán tách ngưỡng tự động trong phân vùng ạ

- Thuật toán đối xứng nền tên tiếng anh của nó là gì?- Giá trị max trong trang 13 slide CH05 là giá trị j?Dear bạn1. Thuật toán đối xứng nền nằm trong bộ các thuật toán gọi là Auto ThresholdNó có thể được gọi là Symmetry. Bạn có thể tìm kiếm theo các key này.

2. Max ở đây là mức xám lớn nhất tồn tại trong bức ảnh.

Thầy Hưngem chào thầyEm có thắc mắc: trong slide về phép lọc trung vị em thấy các điểm không tính được được giữ nguyên còn trong bài tập thầy gửi thì các điểm không tính được được biến thành 0, vậy trong slide hay bài tập là đúng thưa thầy?Ý bạn là các số không ở viền hả.Đúng rồi, ở trong bài tập này chúng ta cho phần viền bằng 0 hết.Chúng ta chỉ tính vị trí nào có đủ cả ma trận lọc thôiThầy Hưngem thưa thầy: trong cân bằng tần xuất thi số mức xám cân bằng (no_level) là giá trị minh tự đặt hay là đặt là 255 vậy thầy

no_level là số mức xám ảnh đã cân bằng sẽ cóChúng ta vẫn muốn lấy lại ảnh 256 mức xám vì vậy cần đặt luôn no_level là 256 (256 mức chứ không phải 255 mức)Thầy HưngEm xin hỏi thầy 1 vấn đề như sau:Giả sử 1 hàng trong ma trận của em như sau:30 0 40  với ngưỡng là 25 và các điểm ảnh từ 0 - 50thì kết quả là:50 0 0 hay50 0 50

Em cảm ơn thầy! :)Nếu bạn đang nói đến khếch tán lỗi một chiều thìBạn làm như sau

Với hàng là 30 0 40

30 > 25 -> 50 -20 40-20 < 25 -> 50 0 202- < 25 -> 50 0 0

Tức là bạn luôn phải chuyển nợ sangLưu ý là nợ được tính bằng cách trừ giá trị tại điểm đó với giá trị làm trònỞ vị trí thứ 2 khi bạn làm tròn từ -20 lên 0 bạn vẫn nợ -20 và phải trả tại vị trí 3

Thầy Hưng

BÀI T P NHÓM PH N IẬ Ầ

Page 46: Thac Mac Mon Xu Ly Anh

Trong phần một này các bạn sẽ làm quen với việc thiết lập và tạo các hàm có trách nhiệm thực hiện các phép biến đổi như đã học trên lớp.

Trong tất cả các bài tập ảnh a là ảnh có 256 mức xám. Giá trị max và min của các điểm ảnh là 0 và 255.

Tách ng ngưỡViết hàm split sao cho nếu:

b = split(a,f)

với a là ma trận thể hiện ảnh đầu vào b là ảnh a đã tách ngưỡng f là ngưỡng xám dùng để tách

Ví dụ:

a = [ 35 44 5523 90 202

145 120 254] và f = 90

thì b = [ 0 0 00 255 255

255 255 255]Khu ch tán l i 1 chi uế ỗ ềViết hàm errdiffu sao cho nếu:

b = errdiffu(a,f)

với a là ma trận thể hiện ảnh đầu vào b là ảnh khuếch tán lỗi một chiều của ảnh a f là ngưỡng xám dùng để tách

Ví dụ:

a = [ 35 44 5523 90 202

145 120 254] và f = 90

thì b = [ 0 0 2550 255 0

255 0 255]Khu ch tán l i 2 chi u theo ki u c a Floyd và Steinbergế ỗ ề ể ủViết hàm errdiffu2d sao cho nếu:

Page 47: Thac Mac Mon Xu Ly Anh

b = errdiffu(a,f)

với a là ma trận thể hiện ảnh đầu vào b là ma trận thể hiện ảnh đầu ra f là ngưỡng xám dùng để tách

Được biết ảnh a có 256 mức xám. Giá trị max và min của tách ngưỡng là 0 và 255.

Ví dụ:

a = [ 35 44 5523 90 202

145 120 254] và f = 90

thì b = [ 0 0 00 255 255

255 0 255]Tăng gi m đ sángả ộViết hàm incrbrightness sao cho nếu:

b = incrbrightness (a,c)

với a là ma trận thể hiện ảnh đầu vào b là ma trận thể hiện ảnh đầu ra c là độ tăng

Ví dụ:

a = [ 35 44 5523 90 202

145 120 254] và c = 90

thì b = [125 134 145113 180 255235 210 255 ]

BÀI T P NHÓM PH N 2Ậ Ầ

Page 48: Thac Mac Mon Xu Ly Anh

Trong phần hai này các bạn sẽ thiết lập và tạo các hàm có trách nhiệm thực hiện các phép biến đổi sử dụng toán tử điểm.

Trong tất cả các bài tập ảnh a là ảnh có 256 mức xám. Giá trị max và min của các điểm ảnh là 0 và 255.

Bi u đ t n su tể ồ ầ ấViết hàm hist sao cho nếu:

h = hist(a)

với a là ma trận thể hiện ảnh đầu vào

thì b là biểu đồ tần suất của a

Ví dụ: ảnh a có mức xám tối đa là 5

a = [1 5 33 3 25 0 1]

thì h = [1 2 1 3 0 2]

(ở đây ví dụ chỉ có cấp xám tối đa là 5, tuy nhiên trong bài tập số mức xám tối đa là 255 vì vậy ta sẽ thu được một vector 1x256)

Cân b ng t n su tằ ầ ấViết hàm histbal sao cho nếu:

b = histbal(a)

với a là ma trận thể hiện ảnh đầu vào

thì b là ảnh sau khi cân bằng tần suất của ảnh a

Page 49: Thac Mac Mon Xu Ly Anh

Tìm ng ng t đ ngưỡ ự ộViết hàm autosplit sao cho nếu:

b = autosplit(a,func)

với a là ma trận thể hiện ảnh đầu vào

thì b là ma trận thể hiện ảnh đầu ra sao cho nếu:

func=1 thì b là ảnh tách ngưỡng của a với ngưỡng được chọn tự động func=2 thì b là ảnh khuếch tán lỗi một chiều của a với ngưỡng được chọn tự động func=3 thì b là ảnh khuếch tán lỗi hai chiều (Floyd và Steinberg) của a với ngưỡng được chọn

tự động

H NG D N S D NG MAINƯỚ Ẫ Ử ỤTrong file zip của bài tập nhóm các bạn sẽ thấy file main.m. Đây chính là hàm các bạn sửu dụng để

thực hiện thao tác trên ảnh có sẵn đồng thời hình dùng được các phép biến đổi làm gì. Để sử dụng

hàm main thì các bạn cần mở file ra để xem bên trong nhưng cơ bản có những điều cần biết sau:

Gọi hàm bằng câu lệnh

main('img1.jpg',func,p1,p2,p3);

với

'img1.jpg' có thể thay đổi giữa các ảnh trong thư mục

func lấy giá trị từ 1-9 tương ứng với các hàm sau:

o split

o errdiffu

o errdiffu2d

o incrbrightness

o histbal

o autosplit

o convolution

o medianfilter

o meanfilter

p1,p2,p3 là các đối số của các hàm, nếu hàm nào chỉ cần 2 đôi số thì bạn chỉ cần điền 2 đối

số là đủ

Ví dụ:

Page 50: Thac Mac Mon Xu Ly Anh

Nếu muốn chạy phép biến đổi incrbrightness trên ảnh 'img2.jpg' với c = 127 thì các bạn gọi hàm như

sau

main('img2.jpg',4,127);

Hoặc nếu muốn gọi phép biến đổi meanfilter trên ảnh 'img2.jpg' với cửa sổ 3 x 3 và f = 20 thì bạn gọi

hàm như sau:

main('img2.jpg',9,3,3,20);

Page 51: Thac Mac Mon Xu Ly Anh

Ngoài ra các bạn có thể gọi thẳng hàm với điều kiện các bạn đã thiết lập sẵn ma trận để test. Nếu muốn chạy phép biến đổi

main('img2.jpg',9,3,3,20);