我從圖像中獲得25個樣本,獲取它們的平均rgb值並將它們保存爲5x5顏色陣列。這些是我的「簽名」。簽名中的值如下所示:比較數據庫中的圖像
Color signature[5][5];
-21233 -1 -323211 ... ...
-123 -12323 ...
...
我可以從簽名的索引中獲取紅色,藍色和綠色值。我使用這些值來比較兩個圖像的簽名並獲得「差異」值。
signature[1][1].getBlue() = 123, Color[1][1].getRed() = 200 ..
for (int x = 0; x < 5; x++) {
for (int y = 0;y < 5; y++) {
int r1 = signature[x][y].getRed();
int g1 = signature[x][y].getGreen();
int b1 = signature[x][y].getBlue();
int r2 = signature2[x][y].getRed();
int g2 = signature2[x][y].getGreen();
int b2 = signature2[x][y].getBlue();
double tempDiff = Math.sqrt((r1 - r2) * (r1 - r2)
+ (g1 - g2) * (g1 - g2)
+ (b1 - b2) * (b1 - b2));
difference += tempDiff;
}
}
我還得到了圖像的第二個簽名,顯示了他們的邊緣找到版本的簽名。比較兩幅圖像,我將正常特徵差異與邊緣特徵差異相乘,得到最終差異值。
在比較兩幅圖像時,一切都很好。但是,我得到了大量的圖片,所以我救了我的簽名數據庫中像下面:
Table images:
-COLUMN name- -COLUMN signature- -COLUMN edge signature-
myimg.jpg |-12312 -132 -2 ... (25 of them) |-123 -1 -1234 -6921 .. (25 of them)|
我只是在連接它們之間的空間簽名指標,並保存爲字符串。
這是我的問題:我需要找到一個圖像的相似之處。如果我從數據庫中選擇所有圖像,事情會變得非常緩慢,而且我內存不足。我可以從數據庫中選擇1000張圖像,比較並獲得下一張1000張圖像,但速度更慢。
我需要一種方法來比較查詢中的圖像簽名,我準備好更改我的表格的列,甚至準備好嘗試瘋狂的表格,其中有100列保存簽名的所有RGB值。我需要減少或散列簽名。它有什麼方法/方法,鏈接或庫你可以建議嗎?任何幫助,將不勝感激。
如果需要,我在NetBeans上使用Java,並使用MySQL。
*「這是我的問題」*該段落或以下內容中沒有任何內容,這是一個問題。 –
根據您的任務添加帶問號的句子。 –