plt.subplot(221),plt.imshow(img,'gray')
时间: 2024-02-24 22:51:36 浏览: 66
plt.subplot(221),plt.imshow(img,'gray')的作用是在一个2x2的网格中创建一个子图,并在该子图中显示灰度图像img。
这段代码的具体功能如下:
- plt.subplot(221):创建一个2x2的网格,并选择第1个子图。
- plt.imshow(img,'gray'):在选定的子图中显示灰度图像img。
这段代码的效果是将灰度图像img显示在一个2x2的网格的第1个子图中。
相关问题
plt.subplot(231), plt.imshow(img,'gray'), plt.title('ORIGINAL') # 原图放大 plt.subplot(232), plt.imshow(replicate,'gray'), plt.title('REPLICATE') # 方式一:复制法 plt.subplot(233), plt.imshow(reflect,'gray'), plt.title('REPLECT') # 方式二:反射法 plt.subplot(234), plt.imshow(wrap,'gray'),plt.title('REFLECT_101') # 方式三:反射法二(不要最边缘的像素) plt.subplot(235), plt.imshow(wrap,'gray'),plt.title('WRAP') # 方式四:外包装法 plt.subplot(236), plt.imshow(constant,'gray'),plt.title('CONSTAVI') # 方式五:常量法
这段代码是在一个2行3列的子图中展示不同的图像处理方式。每个子图都使用plt.imshow()函数来显示对应的图像,并使用plt.title()函数给子图添加标题。
- 第一个子图(plt.subplot(231))显示原始图像,使用灰度色彩空间进行显示,标题为'ORIGINAL'。
- 第二个子图(plt.subplot(232))显示使用复制法进行处理后的图像,同样使用灰度色彩空间进行显示,标题为'REPLICATE'。
- 第三个子图(plt.subplot(233))显示使用反射法进行处理后的图像,同样使用灰度色彩空间进行显示,标题为'REFLECT'。
- 第四个子图(plt.subplot(234))显示使用反射法二(不保留最边缘像素)进行处理后的图像,同样使用灰度色彩空间进行显示,标题为'REFLECT_101'。
- 第五个子图(plt.subplot(235))显示使用外包装法进行处理后的图像,同样使用灰度色彩空间进行显示,标题为'WRAP'。
- 第六个子图(plt.subplot(236))显示使用常量法进行处理后的图像,同样使用灰度色彩空间进行显示,标题为'CONSTANT'。
为什么img_noise和img_result的值差不多from skimage import data,util,color import numpy as np import matplotlib.pyplot as plt def GT(img): m= img.shape[0] n= img.shape[1] G_img=np.zeros((m,n)) for i in range(m-1): for j in range(n-1): G_img[i,j]=np.sqrt((img[i,j+1]-img[i,j])**2+(img[i+1,j]-img[i,j])**2) return G_img def td_denoising(img_noise,img0,lamba,Nmax,tol): img_result = np.zeros(img_noise.shape).astype(float) for k in range(Nmax): for i in range(img_result.shape[0]-1): for j in range(img_result.shape[1]-1): img_result[i,j]=img_noise[i,j]-lamba*(2*img0[i,j]-img0[i+1,j]-img0[i,j+1]) if np.linalg.norm(img0-img_result)<=tol: return img_result break img0 =img_result img_noise = img_result return img_result if __name__=='__main__': img1= data.camera() img = img1.astype(float) img_noise = util.random_noise(img1) G_img_noise = GT(img_noise) G_img = GT(img) plt.figure() plt.subplot(121) plt.imshow(img,'gray') plt.subplot(122) plt.imshow(G_img,'gray') plt.show() plt.figure() plt.subplot(121) plt.imshow(img_noise,'gray') plt.subplot(122) plt.imshow(G_img_noise,'gray') plt.show() img0 = np.zeros(img_noise.shape) img0 = img_noise img0 = img1 lamba = 0.5 Nmax =20 tol=0.00000001 img_result = td_denoising(img_noise,img0,lamba,Nmax,tol) plt.figure() plt.subplot(121) plt.imshow(img_noise,'gray') plt.subplot(122) plt.imshow(img_result,'gray') plt.show()
在这段代码中,`img_noise` 是原始图像加上随机噪声后得到的图像,`img_result` 是经过去噪处理后的图像。在 `td_denoising` 函数中,通过迭代更新 `img_result` 直到满足一定的条件后返回。
在代码中,`img0` 被赋值为 `img_noise`,然后又被赋值为 `img1`,这可能导致 `img0` 的值与 `img_noise` 或 `img1` 的值相近,因此最终的 `img_result` 与 `img_noise` 的值也会相近。建议将 `img0` 的赋值修改为 `img0 = img.copy()`,这样每次迭代时,`img0` 的初始值都为原始图像,而不是与 `img_noise` 或 `img1` 相近的值。
阅读全文