Tìm ảnh trùng nhau bằng VBA

Liên hệ QC

MỹHạnhCB

Đi mây, về gió. !!!
Tham gia
25/3/22
Bài viết
123
Được thích
18
Chào các anh chị trong diễn đàn GPE.
Em muốn hỏi là trong VBA có thuật toán chạy kiểm tra hình ảnh giống nhau không ạ? Nếu có, có thể có em xin để tham khảo ạ. Em xin cảm ơn nhiều.
"Theo như yêu cầu là chạy thư mục chứa ảnh (1) -> So sánh ảnh trong thư mục (1) -> Phát hiện từ ảnh 2,3,4 bị trùng (giống nhau) -> Báo cáo kết quả ra Excel"
 

File đính kèm

  • 1.zip
    5.4 MB · Đọc: 35
Nhờ các bạn giúp viết VBA excel in ấn theo thông tin và file mẫu bên dưới. (mình không biết đăng bài viết ở đâu vì được thông báo không đủ đặt quyền đăng bài)
..............
.............
Nhờ viết VBA Excel In tự động như sau:

+ Tại sheet BanGiao khi nhấn nút in sẽ in tất cả các biên bản theo điều kiện ở ô AC1: Ví dụ BGMB

(Biên bản BGMB được quét ở sheet Data từ cột B8 trở đi)
 

File đính kèm

  • ADSF.xlsm
    157.9 KB · Đọc: 4
Upvote 0
Khó nhỉ? Kể ra biết được nguyên lý nó xác nhận ảnh A với ảnh B giống nhau dựa vào cái gì thì mới chắc ăn.
Hiệu được câu lệnh của nó thì biết thôi bạn, nhưng không học như tôi thì thua rồi. Ví dụ trong đoạn mã trên tôi đoán liên quan đến nhận diện ảnh có 2 câu j[ ] và a = imgSignature(fullpath). Sau đó duyệt vòng lặp để kiểm tra a in j.
Múa rìu qua mắt thợ, kkkkk
 
Upvote 0
Hiệu được câu lệnh của nó thì biết thôi bạn
Không dễ đâu bác ơi, code này chỉ là phần nổi mình viết ra. Còn phần chìm phía sau là cả một thư viện xử lý hình ảnh của nó. Gọi thư viện đó ra xử lý thôi, còn cái phần thư viện bên trong nó làm gì sao biết được. Nếu muốn hiểu thì phải ngồi đọc tài liệu về thư viện đó, bla bla ... :D
@BuiQuangThuan : Hình như nó xử lý liên quan tới pixel ảnh với tông màu gì đó.. cái này chịu :D
 
Upvote 0
Không dễ đâu bác ơi, code này chỉ là phần nổi mình viết ra. Còn phần chìm phía sau là cả một thư viện xử lý hình ảnh của nó. Gọi thư viện đó ra xử lý thôi, còn cái phần thư viện bên trong nó làm gì sao biết được. Nếu muốn hiểu thì phải ngồi đọc tài liệu về thư viện đó, bla bla ... :D
@BuiQuangThuan : Hình như nó xử lý liên quan tới pixel ảnh với tông màu gì đó.. cái này chịu :D
Ý tôi là chỉ cần hiểu câu lệnh thôi là xử lý được rồi (đó là chuyện của lập trình viên mà), chứ thư viện của nó tìm hiểu mốc đời cũng không xong (mà tìm hiểu để làm gì cơ chứ)
 
Upvote 0
Hình như nó xử lý liên quan tới pixel ảnh với tông màu gì đó.. cái này chịu
Nếu như anh nói thế này thì độ tin cậy cao nè. Nếu như thế thì có thể có nhiều ý tưởng với cái này ấy nhỉ? Chẳng hạn đối chiếu ảnh cần duyệt với 1 cái ảnh gốc nào đó xem nó giống bao nhiêu % cũng được phải không anh?
Nhưng khổ nỗi độ ngu dốt của bản thân luôn lớn hơn độ thông minh.
Nhìn thì thèm mà không biết làm thế nào.hihi
 
Upvote 0
Trường hợp của bạn thì giải quyết thủ công cũng khá đơn giản. Bạn cứ xếp thứ tự file theo kích cỡ (size) thì gần như 99,9% file trùng lặp (giống nhau đến từng bit) sẽ xếp liền với nhau. Còn lại khoảng 0,1% là những file cùng size nhưng nội dung khác nhau nhưng khả năng này thì vô cùng thấp. Như 7 file minh họa của bạn, sau khi sắp xếp tôi thấy file 2, 3, 4 là trùng nhau về kích cỡ và thật sự cũng trùng nhau về nội dung.

Dựa vào vài điểm của nguyên lý này thì việc lập trình thì cũng rất dễ với nhiều anh chị ở đây.

Theo như ở anh #14 có chút ý tưởng. Thì em có gom ghép ra được 1 đoạn như này(file đính kèm). Nhưng e không hiểu ở chổ đoạn "Redim()" và trả kết quả cho nó như thế nào ( chỉ gán tên những ảnh có cùng kích cỡ (size) vào Excel).
Các anh chị xem giúp em ạ. Em cám ơn nhiều
 

File đính kèm

  • test123.xlsm
    23.9 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Đừng có làm liều kiểu loại nhầm hơn bỏ sót như thế. Cái dung lượng tập tin không nói lên điều gì cả.

Người ta so sánh từng byte, từng pixel còn chưa ăn ai.
Vâng a, nhưng xét trên phương diện học tập thì anh có thể chỉ em khúc trả kết quả của những tên ảnh trùng từ (Redim()) ra được không ạ. :p
 
Upvote 0
Đừng có làm liều kiểu loại nhầm hơn bỏ sót như thế. Cái dung lượng tập tin không nói lên điều gì cả.

Người ta so sánh từng byte, từng pixel còn chưa ăn ai.
Bây giờ cho befaint cầm một cái camera thông số cố định là 10Mpx - nghĩa là tấm được chụp nào cũng sẽ có độ phân giải y như nhau. Theo befaint thì PHẢI chụp ÍT NHẤT bao nhiêu tấm ở định dạng JPG thì 99% khả năng sẽ xuất hiện 2 tấm CÙNG dung lượng file nhưng hình ảnh thì KHÁC nhau?
 
Lần chỉnh sửa cuối:
Upvote 0
Bây giờ cho anh cầm một cái camera thông số cố định là 10Mpx - nghĩa là tấm được chụp nào cũng sẽ có độ phân giải y như nhau. Theo anh chị thì PHẢI chụp ít nhất bao nhiêu tấm ở định dạng JPG thì 100% khả năng sẽ xuất hiện 2 tấm CÙNG dung lượng file nhưng hình ảnh thì KHÁC nhau?
theo như "file đính kèm" của e ở trên, anh có thể giúp e chổ thay vì lấy kích cỡ (size) thì lấy kích cỡ (size on disk) được không a.
Theo như chiều giờ e chạy thử nghiệm với thì đến phần hình ảnh bị đứng tầm 2,3 hình đầu (của hình đã đứng(trùng lập)) thì cái kích cỡ (size) nó vẫn khác nhau á anh, chỉ có kích cỡ (size on disk) là giống nhau từ lúc bắt đầu có hình trùng lập. Cám ơn a
 

File đính kèm

  • 23a191aa82db4c8515ca.png
    23a191aa82db4c8515ca.png
    7.2 KB · Đọc: 8
Upvote 0
theo như "file đính kèm" của e ở trên, anh có thể giúp e chổ thay vì lấy kích cỡ (size) thì lấy kích cỡ (size on disk) được không a.
Ý bạn là 2 file trùng nhau nhưng "file size" lệch nhau vài byte à? Lần đầu tiên mới nghe tình huống này. Bạn xem lệch tối đa bao nhiêu rồi dùng phép chia lấy nguyên (\) để mà đối chiếu, chẳng hạn lệch 10 thì thực hiện phép so sánh size1\(10+1)=size2\(10+1). Còn so sánh theo "size on disk" thì sai số sẽ tăng lên một tý đấy. --=0
 
Lần chỉnh sửa cuối:
Upvote 0
Ý bạn là 2 file trùng nhau nhưng "file size" lệch nhau vài byte à? Lần đầu tiên mới nghe tình huống này. Bạn xem lệch tối đa bao nhiêu rồi dùng phép chia lấy nguyên (\) để mà đối chiếu, chẳng hạn lệch 10 thì thực hiện phép so sánh (size1\10)=(size2\10). Còn so sánh theo "size on disk" thì sai số sẽ tăng lên một tý đấy nhưng vẫn ở ngưỡng chấp nhận được. --=0
Chiều giờ e có thử trên nhiều ảnh dữ liệu khác nhau. Thì e thấy “size on disk” có vẻ khớp so với vấn đề của e. Nhưng cái khó là em không biết lấy thông tin của “size on disk” của ảnh đó ra ntn ạ. Tại thư mục đính kèm (file 7 ảnh) chỉ là e sao chép ra để anh chị hình dung thôi ạ nên vấn đề giống nhau 100% là đúng. Nhưng trên dữ liệu gốc của e thì phần “size on disk” nó mới trùng nhau ( của các ảnh trùng )
Bài đã được tự động gộp:

Chiều giờ e có thử trên nhiều ảnh dữ liệu khác nhau. Thì e thấy “size on disk” có vẻ khớp so với vấn đề của e. Nhưng cái khó là em không biết lấy thông tin của “size on disk” của ảnh đó ra ntn ạ. Tại thư mục đính kèm (file 7 ảnh) chỉ là e sao chép ra để anh chị hình dung thôi ạ nên vấn đề giống nhau 100% là đúng. Nhưng trên dữ liệu gốc của e thì phần “size on disk” nó mới trùng nhau ( của các ảnh trùng )
Do dữ liệu gốc của e khá nặng nên e không thể nén và bỏ lên cho anh chị xem mẫu đc ạ
 
Upvote 0
Nếu như anh nói thế này thì độ tin cậy cao nè. Nếu như thế thì có thể có nhiều ý tưởng với cái này ấy nhỉ? Chẳng hạn đối chiếu ảnh cần duyệt với 1 cái ảnh gốc nào đó xem nó giống bao nhiêu % cũng được phải không anh?
Nhưng khổ nỗi độ ngu dốt của bản thân luôn lớn hơn độ thông minh.
Nhìn thì thèm mà không biết làm thế nào.hihi
Không dễ đâu bác ơi, code này chỉ là phần nổi mình viết ra. Còn phần chìm phía sau là cả một thư viện xử lý hình ảnh của nó. Gọi thư viện đó ra xử lý thôi, còn cái phần thư viện bên trong nó làm gì sao biết được. Nếu muốn hiểu thì phải ngồi đọc tài liệu về thư viện đó, bla bla ... :D
@BuiQuangThuan : Hình như nó xử lý liên quan tới pixel ảnh với tông màu gì đó.. cái này chịu :D
À, mà muốn chạy đoạn mã trên thì phải có môi trường Python phải không nhỉ? Thực tình là tôi từng cài Python nhưng không thành công nên tôi rất hiểu cái khổ khi bí mà không biết phải làm sao đập bí.
 
Upvote 0
Excel có giới hạn của nó. Cái gì cũng bắt nó làm thì ép quá.
Nhưng mức độ đói bài của dân GPE thì không có giới hạn.
Bất cứ cái gì có thể nhờ GPE làm giùm thì tội gì phải thủ công?

Bài này vốn không phải là vấn đề của Excel. Nhưng hỏi diễn đàn nào dễ bằng GPE?
 
Upvote 0
Nếu là mỗi code vậy thôi thì phải cài python nha bác, cài nó xong còn phải cài thư viện đang sử dụng trong code đó nữa.
Mấy cái nền tảng sử dụng nó lo hết.
Lâu lâu gặp ứng dụng đặc biệt thì mới phải đi tìm tải thêm.
Trên Mac, tôi dùng PyCharm. Trên Windows, tôi nghĩ Spyder là được rồi. Bạn nào quen với Visual Studio thì dùng VS Code cũng được.
 
Upvote 0
Ý bạn là 2 file trùng nhau nhưng "file size" lệch nhau vài byte à? Lần đầu tiên mới nghe tình huống này. Bạn xem lệch tối đa bao nhiêu rồi dùng phép chia lấy nguyên (\) để mà đối chiếu, chẳng hạn lệch 10 thì thực hiện phép so sánh size1\(10+1)=size2\(10+1). Còn so sánh theo "size on disk" thì sai số sẽ tăng lên một tý đấy. --=0
Vấn đề của em chủ yếu là tìm những ảnh bị lỗi và trùng lập nhau do bị nhân đôi hoặc bị đứng khung hình. Nên hôm qua giờ e kiểm tra kích cỡ (size) và (size on disk) thử thì những ảnh bình thường (1) khác nhau cả về (size) và (size on disk), và những ảnh bị trùng (đứng hoặc treo) (2) chỉ khác nhau ở (size) còn (size on disk) thì giống nhau hoàn toàn ạ.
Mong các anh chị giúp em đoạn mã để lấy được thông tin của (size on disk) ạ
 

File đính kèm

  • 12345555.jpg
    12345555.jpg
    150.3 KB · Đọc: 18
Upvote 0
Vấn đề của em chủ yếu là tìm những ảnh bị lỗi và trùng lập nhau do bị nhân đôi hoặc bị đứng khung hình. Nên hôm qua giờ e kiểm tra kích cỡ (size) và (size on disk) thử thì những ảnh bình thường (1) khác nhau cả về (size) và (size on disk), và những ảnh bị trùng (đứng hoặc treo) (2) chỉ khác nhau ở (size) còn (size on disk) thì giống nhau hoàn toàn ạ.
Mong các anh chị giúp em đoạn mã để lấy được thông tin của (size on disk) ạ
Bạn cứ loại bớt giá trị ở hàng đơn vị, hàng chục hoặc hàng trăm là sẽ giải quyết được vấn đề nhé. Có nhiều cách để loại chẳng hạn để bỏ hàng đơn vị thì thực hiện phép tính X=(X\10)*10. Chú ý cái dấu "\" chứ không phải "/"
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom