将图像划分为python中的5×5块并计算每个块的直方图
作者:互联网
使用Python,我必须:
>将Test_Image和Reference_image划分为5×5块,
>计算每个块的直方图,并将其与另一个图像中的相同块进行比较.
例如:image1(1,1)with image2(1,1).
>比较两个图像之间的相似性(应该是变换不变的).
到目前为止,我使用hist = numpy.histogram(image,bins = 256)计算了整个图像的直方图
我想分割图像,然后计算所有这些块的直方图.我也想用Bhattacharya的系数来衡量相似性.
任何人都可以指导我如何通过这个?提前致谢 :)
解决方法:
不确定你是否正在寻找这样的东西,
这是蛮力版本.它可能很慢.但它完成了这项工作
你必须决定如何处理边界.
除非窗口完全适合,否则不包括边界
import numpy as numpy
grey_levels = 256
# Generate a test image
test_image = numpy.random.randint(0,grey_levels, size=(11,11))
# Define the window size
windowsize_r = 5
windowsize_c = 5
# Crop out the window and calculate the histogram
for r in range(0,test_image.shape[0] - windowsize_r, windowsize_r):
for c in range(0,test_image.shape[1] - windowsize_c, windowsize_c):
window = test_image[r:r+windowsize_r,c:c+windowsize_c]
hist = numpy.histogram(window,bins=grey_levels)
下面是结果,完整的图像在最后.
r,c代表窗口的顶角
r=0,c=0
[[ 63 173 131 205 239]
[106 37 156 48 81]
[ 85 85 119 60 228]
[236 79 247 1 206]
[ 97 50 117 96 206]]
r=0,c=5
[[108 241 155 214 183]
[202 2 236 183 225]
[214 141 1 185 115]
[ 4 234 249 95 67]
[232 217 116 211 24]]
r=5,c=0
[[179 155 41 47 190]
[159 69 211 41 92]
[ 64 184 187 104 245]
[190 199 71 228 166]
[117 56 92 5 186]]
r=5,c=5
[[ 68 6 69 63 242]
[213 133 139 59 44]
[236 69 148 196 215]
[ 41 228 198 115 107]
[109 236 191 48 53]]
[[ 63 173 131 205 239 108 241 155 214 183 42]
[106 37 156 48 81 202 2 236 183 225 4]
[ 85 85 119 60 228 214 141 1 185 115 80]
[236 79 247 1 206 4 234 249 95 67 203]
[ 97 50 117 96 206 232 217 116 211 24 242]
[179 155 41 47 190 68 6 69 63 242 162]
[159 69 211 41 92 213 133 139 59 44 196]
[ 64 184 187 104 245 236 69 148 196 215 91]
[190 199 71 228 166 41 228 198 115 107 82]
[117 56 92 5 186 109 236 191 48 53 65]
[177 170 114 163 101 54 80 25 112 35 85]]
标签:python-idle,python,python-2-7,image-processing,computer-vision 来源: https://codeday.me/bug/20191005/1855964.html