修改程序gray = cv2.imread('gray_high_3.bmp', cv2.IMREAD_GRAYSCALE) matrix = np.array(gray) matrix = matrix / 255,将通过matrix[i, j] = float(values[2]) + 32.45 gray = (matrix * 255).astype(np.uint8)生成的matrix[i,j]恢复为原来的数值
时间: 2024-03-25 12:40:36 浏览: 45
您可以通过如下代码将经过上述操作的matrix恢复为原来的数值:
```python
restored_matrix = (matrix * 255 - 32.45) * (1/255)
```
这里做了两步操作:
1. 首先将matrix乘以255,将其还原为原始的灰度值范围(0-255)。
2. 然后减去32.45,将原来加上的常数去掉。
3. 最后将结果除以255,将其还原为原始的灰度值范围(0-1)。
这样,restored_matrix就是经过恢复后的原始矩阵了。
相关问题
修改程序gray = cv2.imread('skeleton_gaussian_high_1_binary.bmp', cv2.IMREAD_GRAYSCALE) matrix = np.array(gray) matrix = matrix / 255 # 将像素值乘以 37.463 并保存到 txt 文件中 with open('image_5.txt', 'w') as f: for i in range(matrix.shape[0]): for j in range(matrix.shape[1]): # 将 i 和 j 映射到新的坐标系中 i_new = i * avg_interval_dx + col1_min j_new = j * avg_interval_dy + col2_min # 将像素值乘以 37.463 并保存到 txt 文件中 if matrix[i, j] > 0 or matrix[i, j] < 0: f.write(f'{i_new}\t{j_new}\t{matrix[i, j] * 37.463 - 25.45:.4f}\n') else: f.write(f'{i_new}\t{j_new}\t{matrix[i, j] * 37.463 - 25.45:.4f}\n'),提取图像中像素点为白色的对应的像素值和对应的矩阵i、j坐标
可以将代码修改为以下形式:
```
gray = cv2.imread('skeleton_gaussian_high_1_binary.bmp', cv2.IMREAD_GRAYSCALE)
matrix = np.array(gray)
matrix = matrix / 255
white_pixels = []
white_pixel_coordinates = []
for i in range(matrix.shape[0]):
for j in range(matrix.shape[1]):
if matrix[i, j] > 0:
white_pixels.append(matrix[i, j] * 37.463 - 25.45)
white_pixel_coordinates.append((i, j))
with open('image_5.txt', 'w') as f:
for i, coord in enumerate(white_pixel_coordinates):
# 将 i 和 j 映射到新的坐标系中
i_new = coord[0] * avg_interval_dx + col1_min
j_new = coord[1] * avg_interval_dy + col2_min
# 将像素值乘以 37.463 并保存到 txt 文件中
f.write(f'{i_new}\t{j_new}\t{white_pixels[i]:.4f}\n')
```
这样修改后,可以提取图像中像素点为白色的对应的像素值和对应的矩阵i、j坐标,并将它们保存到 txt 文件中。
将通过matrix[i, j] = float(values[2]) + 32.45 gray = (matrix * 255).astype(np.uint8)生成的图像,通过修改gray = cv2.imread('gray_high_3.bmp', cv2.IMREAD_GRAYSCALE) matrix = np.array(gray) matrix = matrix / 255 z = (matrix[i, j] * 37.763 - 32.45),得到原始的数值
根据您的描述,如果您想从经过操作后的图像gray恢复出原始的数值,则可以按照如下代码进行操作:
```python
# 读取原始图像
original_gray = cv2.imread('gray_high_3.bmp', cv2.IMREAD_GRAYSCALE)
# 将原始图像转换为numpy数组
original_matrix = np.array(original_gray)
# 将原始图像的值缩放到0-1范围
original_matrix = original_matrix / 255
# 将经过操作后的图像的值缩放到0-1范围
modified_matrix = matrix / 255
# 计算原始数值
restored_values = (modified_matrix[i, j] * 37.763 - 32.45)
# 将原始数值还原为原始图像的值范围(0-255)
restored_matrix = (restored_values / 255) * 37.763 - 32.45
restored_matrix = np.clip(restored_matrix, 0, 255)
# 将还原后的值转换为整型并生成图像
restored_gray = restored_matrix.astype(np.uint8)
```
这里做了以下几步操作:
1. 读取原始图像并将其转换为numpy数组。
2. 将原始图像的值缩放到0-1范围。
3. 将经过操作后的图像的值缩放到0-1范围。
4. 计算经过操作后的图像中某个像素点的原始数值。
5. 将原始数值还原为原始图像的值范围(0-255)。
6. 将还原后的值转换为整型并生成图像。
注意,在第5步中,我们使用了np.clip函数将还原后的值限制在0-255的范围内,以确保生成的图像的像素值在0-255的范围内。
阅读全文