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: 34
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"
Hihi. Ví dụ ảnh 1 như trong file. Tới ảnh 2 tự nhiên có cái lá rơi vào đúng khung hình, ảnh 3 thì có cơn gió thổi qua làm cái gì đó lệch đi khoảng 1cm. Thì được tính là giống nhau hay khác nhau
 
Upvote 0
Thế thì ở mỗi 1 bức ảnh đều là khác nhau nếu góc quay không phải là góc chết rồi. Giả sử có là góc chết đi chăng nữa. Ánh sáng nó cũng làm bức ảnh thay đổi mà
dạ, đúng rồi đó a. Mục đích của e là muốn tìm những ảnh bị nhân lên hoặc những ảnh bị đứng khung hình ạ. Còn mọi vấn đề khác thì đều là không giống nhau.
 
Upvote 0
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"
Tuy không GPE lắm nhưng mà các app dọn rác trên điện thoại hình như là có chức năng phát hiện ảnh trùng lặp. Nếu GPE chưa có giải pháp thì bác thử nhé.
 
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.
 
Lần chỉnh sửa cuối:
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. Đưa nguyên lý này vào lập trình thì cũng rất dễ với nhiều anh chị ở đây.
Dạ vâng ạ, ý tưởng tuyệt vời, nhưng để đưa vào lập trình lấy và so sánh theo kích cỡ (size) ngoài excel thì vượt quá khả năng của e rồi ạ. Mong các anh chị giúp đỡ :p
 
Upvote 0
Cho em ngồi hóng với.Quan tâm tới cái này
Code python nè :D
Python:
import PythonMagick
import os

def imgSignature(imgPath):
    img = PythonMagick.Image(imgPath)
    return img.signature()

directory = r'C:\Users\plan14\Downloads\1' # Đổi Link folder chứa ảnh
j= []
imgExtension = ('.jpg','.png','.jpeg')
for filename in os.listdir(directory):
    fullpath = os.path.join(directory, filename)
    if filename.lower().endswith((imgExtension)):
        a = imgSignature(fullpath)
        # print(a)
        if a in j:
            os.rename(fullpath, os.path.join(directory,'DelFile_' + filename))
        else:
            j.append(imgSignature(fullpath))
Code này chỉ đổi tên file giống nhau (3 ảnh giống nhau thì đổi 2 ảnh sau) thành file có tiền tố "DelFile" chứ không xóa trực tiếp ảnh, để người dùng nếu muốn có thể vào xem lại. Cần xóa thì lọc DelFile xóa.
 
Upvote 0
Code python nè :D
Python:
import PythonMagick
import os

def imgSignature(imgPath):
    img = PythonMagick.Image(imgPath)
    return img.signature()

directory = r'C:\Users\plan14\Downloads\1' # Đổi Link folder chứa ảnh
j= []
imgExtension = ('.jpg','.png','.jpeg')
for filename in os.listdir(directory):
    fullpath = os.path.join(directory, filename)
    if filename.lower().endswith((imgExtension)):
        a = imgSignature(fullpath)
        # print(a)
        if a in j:
            os.rename(fullpath, os.path.join(directory,'DelFile_' + filename))
        else:
            j.append(imgSignature(fullpath))
Code này chỉ đổi tên file giống nhau (3 ảnh giống nhau thì đổi 2 ảnh sau) thành file có tiền tố "DelFile" chứ không xóa trực tiếp ảnh, để người dùng nếu muốn có thể vào xem lại. Cần xóa thì lọc DelFile xóa.
@Nhattanktnn học môn PY từ hồi nào vậy ta?
 
Upvote 0
Code này chỉ đổi tên file giống nhau (3 ảnh giống nhau thì đổi 2 ảnh sau) thành file có tiền tố "DelFile" chứ không xóa trực tiếp ảnh, để người dùng nếu muốn có thể vào xem lại. Cần xóa thì lọc DelFile xóa.
Mơ hồ lắm luôn ấy. Cho em hỏi chút. Nó xét ảnh giống nhau là xét về cái gì thế anh?
Có lẽ em vẫn chưa hình dung được là xét giống nhau là xét cái gì á.
Nhìn code như kiểu đi câu thấy cá tung tăng bơi dưới hồ ấy
 
Upvote 0
Mơ hồ lắm luôn ấy. Cho em hỏi chút. Nó xét ảnh giống nhau là xét về cái gì thế anh?
Có lẽ em vẫn chưa hình dung được là xét giống nhau là xét cái gì á.
Nhìn code như kiểu đi câu thấy cá tung tăng bơi dưới hồ ấy
Mình chỉ biết thư viện đó nó băm hình ảnh thành những chuỗi thế này (7 chuỗi là của 7 hình):

844d0998074d7900d37b1b732e01903135fedc83a4388df124a755e6de9925a5
a619a0ccc7ef279a2ba69f380236be4d04fea291e4a2990a6104306520210cd2
a619a0ccc7ef279a2ba69f380236be4d04fea291e4a2990a6104306520210cd2
a619a0ccc7ef279a2ba69f380236be4d04fea291e4a2990a6104306520210cd2
f4361d16663147cfd2ffd0bb77a7307e553611ab12df7ee0cace5cbeb33d8eb1
040e296dbb0ac8c67c5a7777c52598cc88d5b181096f2f241c1413cd4453b9cf
ed465959ba79653f9de695571e6f211ee26f9ca3b11f4fb36643cc283442bde2

Thì 3 chuỗi từ 2-4 là giống nhau, cho nên sẽ xóa ảnh thứ 3 và 4. Còn nguyên lý nó băm thế nào ra vậy thì mình không biết haha
 
Upvote 0
Còn nguyên lý nó băm thế nào ra vậy thì mình không biết haha
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.
Gửi chủ thớt:
Tự nhiên nhớ ra cái vụ trong điện thoại của bản thân. Có đứa con gái lấy điện thoại chụp chụp chụp: n kiểu ảnh. Sau khi vào Thư viện ảnh. Máy điện thoại đột nhiên báo dọn dẹp thư viện: Bạn có muốn xóa những ảnh trùng. Liệu cách này có áp dụng được cho chủ thớt không thì thử tham khảo tìm hiểu xem thế nào nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom