嗨,我使用了示例图像phantom.png。我正在使用numpy + skimage库进行一些操作,经过一些修改后,最后一个练习要求:
将中心点的大小压缩50%,并绘制最终图像。
这些是我之前要做的步骤。
我读了这张图片
img = imread(os.path.join(data_dir, 'phantom.png'))
然后应用以下使其变为黑色和白色
img[np.less_equal(img[:,:,0],50)] = 0
img[np.greater_equal(img[:,:,0],51)] = 255
在给定坐标下拍摄了几片图像(黑点)
img_slice=img.copy()
img_slice=img_slice[100:300, 100:200]
img_slice2=img.copy()
img_slice2=img_slice2[100:300, 200:300]
现在翻转它们
img_slice=np.fliplr(img_slice)
img_slice2=np.fliplr(img_slice2)
并将它们放回图像副本中
img2=img.copy()
img2[100:300, 200:300]=img_slice
img2[100:300, 100:200]=img_slice2
这是最终(“压缩”)练习之前的结果图像:
然后,我被要求使用该numpy.compress
方法“减少”黑点。
使用“压缩”方法后的预期结果是以下图像(屏幕截图),其中黑点减少了50%:
但是我不知道如何numpy.compress
在图像或图像切片上使用方法来获得结果,甚至无法接近,我所得到的只是图像中看起来像是裁剪或拉伸部分的大块。
我将不胜感激numpy.compress
,因为它对方法在该问题上的工作方式有帮助,但即使在可行的情况下也可行。
您似乎可以进行裁剪和提取,但是只是停留在压缩方面。因此,裁剪中间部分并将其另存为im
,我们将在下一步中对其进行压缩。用白色填充您裁切出的区域。
现在,压缩裁剪的部分。为了减少50%,您需要采用交替的行和交替的列,因此:
# Generate a vector alternating between True and False the same height as "im"
a = [(i%2)==0 for i in range(im.shape[0])]
# Likewise for the width
b = [(i%2)==0 for i in range(im.shape[1])]
# Now take alternate rows with numpy.compress()
r = np.compress(a,im,0)
# And now take alternate columns with numpy.compress()
res = np.compress(b,r,1)
最后放回res
原始图像,相对于剪切位置,将其宽度和高度偏移一半。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句