ئالدىنقى يازمىمىزدا گۇگۇل ۋە باشقا ئىزدەش ماتورلىرىنىڭ ئوخشاش رەسىملەرنى ئىزدەش ئىقتىدارىنىڭ ماھىيىتىنى چۈشىنىپ، ئەمەلگە ئاشۇرۇشنىڭ بىر خىل ئۇسسۇلى بىلەن تونۇشقان ئىدۇق: ئەمدى مونۇ يازمىمىزدا ماقالە ئاپتورى بىر يىلدىن كېيىن يازغان يەنە ئىككى خىل ئەمەلگە ئاشۇرۇش ئۇسسۇلى ھەققىدە توختىلىپ ئۆتىمىز!
1. رەڭ تارقىلىشى بويىچە ئىزدەش ئۇسسۇلى
ھەرقانداق رەسىمنڭ رەڭ قۇرۇلمىسىغا ئاساسەن، رەڭ تارقىلىش دىئاگراممىسى (color histogram) نى ھاسىللاشقا بولىدۇ. ئۇنداقتا ئېنىقكى، رەڭ تارقىلىش دىئاگراممىسى ئوخشىشىپ كېتىدىغان رەسىملەر ئوخشاش رەسىم بولىدۇ.
ھەممىمىز بىلىمىز، ھەرقانداق بىر رەڭ قىزىل، يېشىل، كۆك ئۈچ (RGB)خىل رەڭنىڭ بىرىكىشىدىن ھاسىل بولىدۇ. يۇقىرىقى رەسىمدىكى 4 خىل دىئاگراممىنىڭ ئالدىنقى ئۈچى مەزكۇر رەسىمدىكى ئۈچ خىل ئەسلى رەڭ، ئاخىرقىسى بىرىكمە رەڭلەر دىئاگىراممىسىدىن ئىبارەت.
ئويلاپ باقايلى، ئەگەر ھەر بىر خىل رەڭنى 255 قىممەت بويىچە ئېلىشقا بولسا، ئۇنداقتا ئۈچ خىل ئەسلى رەڭنىڭ بىرىكىشىدىن تۈزۈلگەن ھەرقانداق بىر رەڭ بوشلۇقى (يەنى مەلۇم رەسىم يۈزىدە)جەمئىي 16777216 (يەنى255 نىڭ 3 - دەرىجىسى، تەخمىنەن 16 مىليۇن) خىل رەڭ بولغان بولىدۇ. بۇنچە كۆپ رەڭلەرنىڭ دىئاگراممىسىنى بىۋاستە ھالدا بىر - بىرلەپ سىلىشتۇرۇشقا غايەت ھىسابلاش كۈچى كېتىدۇ ئەلۋەتتە.شۇڭا ئاددىيلاشتۇرۇش ۋاستىسى قوللىنىشقا توغرا كېلىدۇ. يەنى 0 ~ 256 گىچە بولغان رەڭ قىممەتلىرىنى تەكشى 4 رايۇنغا پارچىلىۋالىمىز: 0 ~63 كىچە 0 - رايۇن، 64 ~ 127 گىچە 1 - رايۇن، 128 ~191 گىچە 2 - رايۇن، 192 ~255 غىچە 3 - رايۇن. دېمەك، قىزىل، يېشىل، كۆك رەڭلەرنى 4 رايۇنغا بۆلىگەندىن كېيىن جەمئىي 64 خىل بىرىكىش مۇمكىنچىلىكى بولىدۇ(يەنى، 4*4*4=64). كۆرىۋېلىشقا بولىدۇكى، ھەرقانداق بىر خىل بىرىكمە رەڭ چوقۇم موشۇ 64 خىل بېرىكىش مۇمكىنچىلىك ئىچىدىكى بىرسى بولىدۇ.ئاندىن بىز بۇنىڭغا ئاساسەن، ھەر بىر خىل بىرىكىش مۇمكىنچىلىكى ئىچىگە چۈشىدىغان پېكىسىل نوقتىلىرىنىڭ سانىنى سىتاستىكىلىيالايمىز!
يۇقىرىقىسى مەلۇم بىر رەسىمنىڭ رەڭ تارقىلىش سىتاستا جەدىۋېلى بولۇپ، ھەر بىر جەدىۋەلنىڭ ئاخىرقى رېتىدىكى پېكىسىل نوقتا قىممەت سانلىرىنى ئېلىپ، 64 ئۆلچەملىك ۋېكتور (7414, 230, 0, 0, 8, ..., 109, 0, 0, 3415, 53929) ھاسىللىۋالىمىز. مانا بۇ ۋېكتور مەزكۇر رەسىمنىڭ خاس قىممىتى ياكى "بارماق ئىزى" دەپ ئاتىلىدۇ. شۇنىڭ بىلەن ئوخشاش رەسىملەرنى ئىزدەش مەسىلىسى ئوخشىشىپ كېتىدىغان قىممەتتىكى ۋېكتورلارنى ئىزدەشكە ئايلانغان بولىدۇ. ئۇلارنىڭ ئوخشاشلىقىنى پېرسۇن مۇناسىۋەتچانلىق كوئېففېتسېنتى ياكى كوسىنۇس ئوخشاشلىق دەرىجىسى ئارقىلىق ھېسابلاپ چىقىشقا بولىدۇ.
2. مەزمۇن ئالاھىدىلىكى بويىچە ئىزدەش ئۇسسۇلى
رەسىملەرنىڭ رەڭ تارقىلىشىدىكى ئوخشاشلىقلاردىن باشقا يەنە رەسىم يۈزىدىكى مەزمۇنلىرىنىڭ ئوخشاشلىقى ئارقىلىق ئوخشىشىپ كېتىدىغان رەسىملەرنى ئىزدەپ تېپىشقا بولىدۇ.
ئاۋۋال ئىزدىمەكچى بولغان رەسىمنى بىرقەدەر كىچىك كۈل رەڭ رەسىمگە ئايلاندۇرىۋالىمىز. ئاندىن ئۇنىڭغا بىر چەك قىممەت(threshold) بەلگىلىۋىلىپ، كۈلرەڭ رەسىمنى يەنىمۇ ئىلگىرلەپ، ئاق - قارا رەڭلىك رەسىمگە ئايلاندۇرىمىز.
ئەگەر ئىككى رەسىم ئوخشاش بولسا، ئۇلارنىڭ يۈزىدىكى مەزمۇن ئوخشاش بولىدۇ. ئۇنداقتا ئۇلارنىڭ ئاق - قارا رەسىملىرىدىكى گىرۋەك ئىزلىرى ئوخشىشىپ كېتىدۇ. دېمەك، مەسىلە يەنىلا بىرىنچى قەدەم، قانداق قىلىپ توغرا چەك قىممەت بەلگىلەپ، ئاشۇ قىممەت بويىچە ھەربىر ئاق - قارا رەسىمدىكى گىرۋەكلەرنى خاس ئىپادىلەش بولۇپ قالدى.
ئېنىقكى رەسىمنىڭ تەگلىكى بىلەن يۈز قىسمى رەڭ پەرقى قانچە چوڭ بولسا، گىرۋەكلىرى شۇنچە ئېنىق چىقىدۇ. دىمەككى، ئەگەر بىز تەگلىك رەڭگى ۋە يۈز رەڭگىنىڭ پەرقىنى "تۈرلەر ئىچىدە ئەڭ كىچىك" (minimizing the intra-class variance) ياكى "تۈرلەر ئارا ئەڭ چوڭ" (maximizing the inter-class variance) قىلىپ بىرەلەيدىغان قىممەتنى تېپىپ چىقالىساقلا، شۇنى مەزكۇر رەسىمنىڭ چەك قىممىتى قىلساق بولىدۇ.
1979 - يىلى ياپونىيە تەتقىقاتچىسى داجىنجەنجى "تۈرلەر ئىچىدە ئەڭ كىچىك " قىممەت بىلەن "تۈرلەر ئارا ئەڭ چوڭ" قىممەتنىڭ بىر ئىش ئېكەنلىكىنى، يەنى ئوخشاش بىر چەك قىممەتكە توغرا كېلىدىغانلىقىنى ئىسپاتلىغان. شۇنداقلا ئۇ يەنە، بۇ خىل چەك قىممەتنى ھېسابلاپ چىقالايدىغان ئاددىي ئالگورىفما داجىن ئالگورىفماسى (Otsu's method) تۈزۈپ چىققان. تۆۋەندىكىلىرىنى ئۇنىڭ ھېسابلاش ئۇسسۇلىدىن ئىبارەت:
ئەگەر، مەلۇم رەسىمنىڭ بارلىق پىكىسىل نوقتا سانىنى n دەپ پەرەز قىلساق، بۇنىڭ ئىچىدە رەسىمنىڭ چەك قىممىتىدىن كىچىك بولغانلىرى n1 دانە، تەڭ ياكى چوڭ بولغانلىرى n2 دانە پېكىسىل نوقتا قىممىتى بولسا(n1+n2+n بولىدۇ)، w1 ۋە w2 نى بۇ ئىككى خىل پىكىسىل قىممەتلىرىنىڭ ئايرىم نىسبىتى دەپ ئالساق، ئۇنداقتا ئىپادە تۆۋەندىكىدەك بولىدۇ:
w1 = n1 / n w2 = n2 / n
يەنە، كۈلرەڭ دەرىجىسى چەك قىممەتتىن كىچىك بولغان بارلىق پېكىسىل نوقتىلىرىنىڭ ئوتتۇرىچە قىممىتى ۋە كۋادرا ئايرىمىسىنى ئايرىم ھالدا μ1 ۋە σ1، كۈلرەڭ دەرىجىسى چەك قىممەتتىن چوڭ ياكى تەڭ بولغان بارلىق پېكىسىل نوقتىلىرىنىڭ ئوتتۇرىچە قىممىتى ۋە كۋادرا ئايرىمىسىنى ئايرىم ھالدا μ2 ۋە σ2 دەپ پەرەز قىلساق. ئۇنداقتا تۆۋەندىكىدەك يەكۈن چىقىدۇ:
turler ichide periq = w1(σ1 ning kuwadirati) + w2(σ2 ning kuwadirati) turler ara perq = w1w2(μ1-μ2)^2
يۇقىرىقى ئىككى ئىپادىنىڭ ئاخىرقى قىممىتى تەڭ بولىدىغانلىقىنى ئىسپاتلاشقا بولىدۇ. دېمەك، "تۈرلەر ئىچىدە ئەڭ كىچىك" قىممەت بىلەن "تۈرلەر ئارا ئەڭ چوڭ" قىممەتنىڭ ئوخشاش ئېكەنلىكىنى شۈبىھسىز بولغان بولىدۇ. يۇقىرىقى ئىككى ئىپادىنى سىلىشتۇرغاندا ئاستىدىكىسىنى ھېسابلاپ چىقىش ئاسانراق .
ئىككىنچى قەدەم: "تولۇق ھېسابلاش" (穷举法) ئۇسسۇلىدىن ئىبارەت.
يەنى،رەسىمنىڭ كۈلرەڭ دەرىجىسىنى ئەڭ كىچىكىدىن ئەڭ چوڭىغىچە چەك قىممەت ئورنىدا يۇقىرىقى ئىپادىگە كىرگۈزۈپ، "تۈرلەر ئىچىدە ئەڭ كىچىك" ياكى "تۈرلەر ئىچىدە ئەڭ چوڭ" قىممەتنى تېپىپ چىقىپ، ئۇنى ئاخىرقى چەك قىممەت قىلىپ بېكىتىمىز. بۇنى Java ئارقىلىق ئەمەلگە ئاشۇرۇشنىڭ تەپسىلىي ئۇسسۇللى بۇيەردە
50x50 پېكىسىل قىمممتىدىكى ئاق - قارا رەڭلىك كىچىكلەتمە رەسىم ، ئەمەلىيەتتە 50x50 ئۆلچىمىدىكى 0 ۋە 1 دىن تەركىپلەنگەن ماترىتسا دىن ئىبارەت. يەنى، 0 قارا رەڭنى، 1 ئاق رەڭنى بىلدۈرىدۇ. بۇ ماترىتسا مەزكۇر پارچە رەسىمنىڭ خاس ماترېتساسى (ياكى خاس قىممىتى) دېيىلىدۇ.
ئىككى رەسىمنىڭ خاس ماترېتسالىرىدىكى ئوخشاشلىق قانچە چوڭ بولسا، ئىككى رەسىم شۇنچە ئوخشاش بولغان بولىدۇ. بۇنى ئاددىيلا "غەيرىي ياكى ئەمىلى" (异或运算 نى مەن شۇنداق ئالدىم، مازاق قىلماڭلا) ئارقىلىق ھېسابلايمىز(يەنى، ئىككى قىممەت ئىچىدە پەقەت بىرسىلا 1 بولسا نەتىجە 1 بولىدۇ، باشقا ئەھۋالدا نەتىجە 0 بولىدۇ). ھەرخىل رەسىملەرنىڭ خاس ماترېتساسىغا قارىتا "غەيرىي ياكى " ھېسابلاش يۈرگۈزگەندىن كېيىن نەتىجىدە 1 قانچە ئاز بولسا، بۇ رەسىملەرنىڭ ئوخشاشلىقى شۇنچە كۈچلۈك بولغان بولىدۇ.
(تامام)
ئەسلى يازما ئاساسىدا ئۆزلەشتۈرۈلدى: http://www.ruanyifeng.com/blog/2013/03/similar_image_search_part_ii.html
ئىسىل
قايسى كۈنى بۇ تىخنىكىنىڭ بىر ئاجىزلىق تەرىپىنى تىپىپ چىقتىم، بۇ ئاجىزلىق بىز تىلفۇنىمىز (13مىلىيون پىكسىل ئىنىقلىقتا) ئارقىلىڭ تارتقان كىتاپتىكى مەلۇم بىر بۆلەك مەزمۇننى بەيدۇ ياكى گوگۇلدىن ئىزدىسەك رەڭ قۇرۇلمىسى شۇنىڭغا ئوخشىشىپ كىتىدىغان مەزمۇنى ئوخشىمايدىغان رەسىملەرنى ئىزدەپ تىپىپ بىرىش مۇمكىنچىلىكى زوركەن
مەزمۇننى ئاساس قىلغان رەسىم ئىزدەشتە باشقىچىرەك ئۇسسۇل قولىنىلىدۇ. يەنى رەسىم يۈزىدىكى مەزمۇننى تونۇيالايدىغان….
ئۇنداقتا بۇ تېخنىكا ئارقىلىق كومپىيوتېردىكى نەچچە مىڭلىغان رەسىم ئىچىدىن بىر كىشىنىڭ رەسىمىنى تاپماقچى بولساق شۇ كىشىنى سۈرەتكە تارتىپ كىرگۈدەك تېپىپ بىرەلەمدۇ ؟
ئەلۋەتتە تېپىپ بېرەلەيدۇ. موشۇ تېخنىكا بويىچە ئاددىي بىر پىروگرامما تۈزۈپ ئىجرا قىلساقلا..