分辨率单位及换算,LW / PH、LP / mm、L / mm、Cycles / mm、Cycles / pixel、LP / PH

LP /mm

指的是镜头的分辨率计算单位,是镜头对于成像质量传递的评判标准;

在模拟时代中,胶片和/或镜头的分辨率以每毫米线对(LP / mm)表示。此单位表示在传感器/胶片平面中,您可以在一毫米内找到的线对数量。一条线对是一条黑线和一条白色的线,方向相同,宽度相同。如果镜头的分辨率为100 LP / mm,则表示在胶片(或传感器)上投影1毫米内有100条黑线和100条白线。

在数字时代中,数字值没有物理范围,只有其在屏幕上或打印中的表示。所以你不能用这个单位来表达数字图像的分辨率。

您可以使用LP / mm来表示镜头的分辨率。但是在这种情况下,您需要知道设备中使用的传感器的确切尺寸,有时很难发现,如果无法打开设备,大部分时间都不可能。

LP / pix(cy / px)

正如我们已经表明,LP / mm不是数码相机可以捕捉的分辨率的合适单位,需要不同的单位。
一个非常常见的单位是每个像素的线对或每个像素的周期。在这种情况下,我们没有单位的物理范围,我们只描述一个像素可以解析多少个线对。
由于线对总是黑线和白线,因此可以达到的最大分辨率是1/2 LP / pix。

所以如果一台相机可以解析0.4LP /像素,它将达到其理论最大分辨率的80%。这样,人们可以很容易地比较两个相机,看看他们如何利用他们拥有的像素量。

LP / PH

如果只用LP / pix表示分辨率,则不考虑采样本身会降低分辨率。所以如果你有0.5 LP / pix的照相机A和0.4 LP / pix的照相机B,你会说A比B好。但是如果照相机A只有320像素,而照相机B有2000像素,则对应160 LP / PH到800 LP / PH,将分辨率表示为每个图像高度的线对。那么照相机B一定会在同一场景中显示更多细节

PPI

扫描仪更喜欢另一个单位:PPI,每英寸像素。在扫描仪的情况下,它表示扫描原稿的一英寸(25.4毫米)的像素数量。所以如果你测试该设备的分辨率,你需要知道你扫描的对象的大小。PPI类似于“像素”。它给出了一英寸的像素量,但这并不意味着这些像素保存有用的信息。根据我们的经验,大多数扫描仪不能达到PPI中定义的预期采样率。所以对于扫描仪来说,检查LP / pix是非常麻烦的,因为这会给你扫描仪的性能。许多扫描仪接近0.5 LP / pix为200 PPI,但是在300 PPI或甚至400 PPI的情况下要少得多。只是提及,因为它经常混淆和使用错误:DPI不同于PPI。喷墨打印机可以具有非常高的DPI(每英寸点数)。

兆赫

兆赫作为空间分辨率的单位?在模拟视频中,兆赫是已知的分辨率单位,因为每条线具有明确的时间。除了数字视频之外,传输信号时没有明确定义的像素。因此,您可以以μ秒为单位更好地表示图像的宽度,如果用毫秒代替LP / mm中的毫米,则最终以兆赫为单位。

ref

https://www.cnblogs.com/ybqjymy/p/12357854.html

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用按键、LED和UART实现抢答器的示例代码,供参考: ```c #include <msp430.h> #include <stdio.h> #define UART_TXD BIT2 // UART输出引脚 #define UART_BAUDRATE 9600 // UART波特率 #define LED1 BIT0 // LED1引脚 #define LED2 BIT6 // LED2引脚 #define BUTTON BIT3 // 按键引脚 #define TIMER_INTERVAL 32768 // 定时器计数器值 #define TIMER_DELAY 10 // 抢答持续时间(秒) volatile unsigned int timer_count = 0; // 定时器计数器 volatile unsigned int button_pressed = 0; // 按键是否被按下 volatile unsigned int button_released = 0; // 按键是否被释放 volatile unsigned int button_acknowledged = 0; // 按键是否被确认 void uart_init() { P1SEL |= UART_TXD; // 选择UART输出引脚 P1SEL2 |= UART_TXD; UCA0CTL1 |= UCSWRST; // 复位UART控制器 UCA0CTL1 |= UCSSEL_2; // 选择SMCLK作为时钟源 UCA0BR0 = 104; // 设置波特率 UCA0BR1 = 0; UCA0MCTL = UCBRS0; // 设置调制解调器 UCA0CTL1 &= ~UCSWRST; // 启动UART控制器 } void uart_send(char *data) { while (*data) // 循环发送数据 { while (!(IFG2 & UCA0TXIFG)); // 等待UART发送缓冲器就绪 UCA0TXBUF = *data++; // 发送数据 } } void led_init() { P1DIR |= LED1 | LED2; // 设置LED引脚为输出模式 P1OUT &= ~(LED1 | LED2); // 关闭LED } void button_init() { P1DIR &= ~BUTTON; // 设置按键引脚为输入模式 P1REN |= BUTTON; // 启用内部上拉电阻 P1OUT |= BUTTON; // 设置内部上拉电阻为高电平 P1IES |= BUTTON; // 设置下降沿触发 P1IFG &= ~BUTTON; // 清除按键中断标志 P1IE |= BUTTON; // 启用按键中断 } void timer_init() { TA0CTL = TASSEL_1 | MC_1 | TACLR; // 选择ACLK作为时钟源,启用连续计数模式,清除计数器 TA0CCR0 = TIMER_INTERVAL; // 设置计数器值 TA0CCTL0 = CCIE; // 启用计时器中断 } #pragma vector=PORT1_VECTOR // 按键中断函数 __interrupt void button_isr() { if (!(P1IN & BUTTON)) // 如果按键被按下 { button_pressed = 1; // 设置按键已被按下标志 P1IFG &= ~BUTTON; // 清除按键中断标志 } else // 如果按键被释放 { button_released = 1; // 设置按键已被释放标志 } } #pragma vector=TIMER0_A0_VECTOR // 计时器中断函数 __interrupt void timer_isr() { timer_count++; // 计数器自增 if (timer_count >= TIMER_DELAY) // 如果抢答时间到 { if (button_pressed) // 如果有人抢答成功 { P1OUT |= LED1; // 打开LED1 uart_send("success"); // 发送抢答成功信息 } else // 如果没有人抢答成功 { P1OUT |= LED2; // 打开LED2 uart_send("fail"); // 发送抢答失败信息 } button_acknowledged = 1; // 设置按键已被确认标志 timer_count = 0; // 重置计数器 } } int main() { WDTCTL = WDTPW | WDTHOLD; // 关闭看门狗定时器 uart_init(); // 初始化UART led_init(); // 初始化LED button_init(); // 初始化按键 timer_init(); // 初始化计时器 __enable_interrupt(); // 启用中断 while (1) { if (button_acknowledged) // 如果按键已被确认 { button_pressed = 0; // 重置按键状态 button_released = 0; button_acknowledged = 0; P1OUT &= ~(LED1 | LED2); // 关闭LED __delay_cycles(1000000); // 延迟一段时间,避免按键抖动 } } } ``` 在上述代码中,我们使用MSP430微控制器实现了抢答器功能。其中,使用了按键中断、定时器中断、LED输出和UART通信功能。通过这些功能的组合,我们可以实现一个简单的抢答器,用于课堂或会议等场合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值